在PRE_GET_POST中插入变量

时间:2015-04-26 作者:Charles

我在谷歌上搜索过,但运气不好。我正在尝试向此代码中添加一个变量,以修改主页中帖子的类别:

代码不工作:

<?php $p = $_GET [\'p\'] ;?> 
<?php $catvar = get_cat_ID($p); ?>
<?php function my_home_category($query) {$query->set(\'cat\', $catvar);}add_action(\'pre_get_posts\', \'my_home_category\' );?>
代码工作:

<?php $p = $_GET [\'p\'] ;?> 
<?php $catvar = get_cat_ID($p); ?>
<?php function my_home_category($query) {$query->set(\'cat\', 25);}add_action( \'pre_get_posts\', \'my_home_category\' );?>
当我手动输入类别的id时,代码正在工作,我只看到该类别的帖子。有什么想法吗?非常感谢。

1 个回复
最合适的回答,由SO网友:Sumit 整理而成

不能在函数外部定义的函数内部使用变量!从中获取值$_GET 函数内部。

function my_home_category($query) {
    if (isset($_GET [\'p\'])) {
        $catvar = get_cat_ID($_GET [\'p\']);
        $query->set(\'cat\', $catvar);
    }
}
add_action( \'pre_get_posts\', \'my_home_category\' );

结束

相关推荐