最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

functions - Running script based on Category

programmeradmin0浏览0评论

I have a child theme with function.php where I am running a script in the header but now I want to tweak it to run only on posts listed under one category and avoid on homepage or other categories. Here is my existing code which I modified but it is firing the script on the entire website.

add_action('wp_head', 'mailchimp_wp_head');
function mailchimp_wp_head() {
    ?>
        <?php if ( is_category( 93 ) ) :?> 
        <script id="mcjs">!function(c,h,i,m,p){m=c.createElement(h),p=c.getElementsByTagName(h)[0],m.async=1,m.src=i,p.parentNode.insertBefore(m,p)}(document,"script",".js");</script>
        <?php endif; ?>
    <?php
}

Thanks!

I have a child theme with function.php where I am running a script in the header but now I want to tweak it to run only on posts listed under one category and avoid on homepage or other categories. Here is my existing code which I modified but it is firing the script on the entire website.

add_action('wp_head', 'mailchimp_wp_head');
function mailchimp_wp_head() {
    ?>
        <?php if ( is_category( 93 ) ) :?> 
        <script id="mcjs">!function(c,h,i,m,p){m=c.createElement(h),p=c.getElementsByTagName(h)[0],m.async=1,m.src=i,p.parentNode.insertBefore(m,p)}(document,"script","https://chimpstatic/mcjs-connected/js/users/hidden.js");</script>
        <?php endif; ?>
    <?php
}

Thanks!

Share Improve this question asked Jan 13, 2021 at 15:12 howtocodehowtocode 32 bronze badges 11
  • 1 Your code looks good, so are you sure the category ID is 93? There could also be plugin or other code which is adding the script on your site, so try deactivating plugins. – Sally CJ Commented Jan 13, 2021 at 15:22
  • Adding code if ( is_category( 93 ) did have any effect. It is being fired on the entire site like before adding. – howtocode Commented Jan 13, 2021 at 15:25
  • 1 I don't understand, but you mean, "did have" or "did not have"? And as I said, your code should work. – Sally CJ Commented Jan 13, 2021 at 15:32
  • This is my current live code add_action('wp_head', 'mailchimp_wp_head'); function mailchimp_wp_head() { ?> <script id="mcjs">!function(c,h,i,m,p){m=c.createElement(h),p=c.getElementsByTagName(h)[0],m.async=1,m.src=i,p.parentNode.insertBefore(m,p)}(document,"script","chimpstatic/mcjs-connected/js/users/hidden.js");</…> <?php } I tried modifying it as in the question but it still fires on every category – howtocode Commented Jan 13, 2021 at 15:34
  • Then it sounds like a caching issue. Try clearing your site and browser caches. – Sally CJ Commented Jan 13, 2021 at 15:40
 |  Show 6 more comments

1 Answer 1

Reset to default 2

run only on posts listed under one category

I highlighted that "posts" because if so, then the conditional tag you should use is in_category() and not is_category() which is for category archive pages (e.g. example/category/foo) — so for example, is_category( 93 ) checks if the current archive page is for the category (with the ID of) 93, whereas in_category( 93 ) checks if the current post is in the category 93.

So try with:

<?php if ( is_single() && in_category( 93 ) ) :?> 
<script id="mcjs">!function(c,h,i,m,p){m=c.createElement(h),p=c.getElementsByTagName(h)[0],m.async=1,m.src=i,p.parentNode.insertBefore(m,p)}(document,"script","https://chimpstatic/mcjs-connected/js/users/hidden.js");</script>
<?php endif; ?>
发布评论

评论列表(0)

  1. 暂无评论