is_category,is_single,is_page在function.php中不起作用

时间:2017-04-21 11:21:53

标签: php wordpress function

我有一个名为“magazine”的类别,我创建了这个类别的一些文章。这是我的文章http://www.example.com/magazine/article-one/的链接。如果我在这个类别中,我想检查function.php,因为我使用if(is_category('magazine')){die('I am in magazine category');}但我什么也没得到。我尝试使用is_singleis_page,但所有这些功能都无效。

3 个答案:

答案 0 :(得分:2)

是的,这些函数不能直接在functions.php中使用,因为你需要像下面那样使用它们,

add_filter('pre_get_posts', 'limit_archive_posts' ,5);
function limit_archive_posts($query){
    if ($query->is_category) {
        $query->set('posts_per_page', 3);
    }
    if($query->is_single == 1){
        $query->set('posts_per_page', 1);
    }
    return $query;
}

或在wp_enqueue_scripts,wp_head,wp_footer过滤器中使用它们。

答案 1 :(得分:1)

你不能在function.php中使用这些函数,否则它们就没有意思了。 is_category检查类别。它将在分类页面查询中获得类别。

您可以使用此操作来完成工作

add_filter('pre_get_posts', 'limit_archive_posts' ,5);
function limit_archive_posts($query){
    if ('magazine' === $query->is_category) {

     }
    if(1 === $query->is_single){

    }
    return $query;
} 

你可以将你的函数逻辑放在主题functions.php中 并且您可以在taxonomy.phparchive.php上使用此条件 根据条件

呈现适当的逻辑
if(is_category('magazine')){
    call_my_category_work_function();
}

答案 2 :(得分:0)

尝试以下代码

 $category_object=get_queried_object();
 $category_term_id = $category_object->term_id;
 if($category_term_id == "your magazine term_id")       
 {
    echo 'I am in magazine category';   
 }