Is_page()不能在插件内工作

时间:2013-09-21 作者:Timothy Owen

在我的插件中,我正在做:

function get_user_strains()
{
    $userID = get_current_user_id();

    $args = array(
        \'post_type\'     => \'strain\',
        \'orderby\'       => \'post_date\',
        \'order\'            => \'DESC\',
        \'post_status\'      => \'publish\',
    );

    $strains = get_posts($args);

    global $userStrains;
    $userStrains = array();

    foreach($strains as $i)
    {
        $meta = get_post_meta($i->ID);
        //var_dump($meta);
        if($i->post_author == $userID)
        {
            $i->type = $meta[\'type\'][0];
            $i->rating = $meta[\'rating\'][0];
            //var_dump($i);
            array_push($userStrains, $i);
        }
    }

    //var_dump($userStrains);
    $userStrainsJson = json_encode($userStrains);

    //var_dump($userStrains);

    wp_reset_query();
}
add_action(\'init\',\'get_user_strains\');

function edit_strain()
{
    if(is_page()) echo "IS A PAGE";
    $id = isset($_GET[\'id\']) ? $_GET[\'id\'] : \'no id set\';

    global $editStrainData;
    $editStrainData = get_post($id);
    global $editStrainMeta;
    $editStrainMeta = get_post_meta($id);

    wp_reset_query();
}
add_action(\'init\',\'edit_strain\');
我正在尝试确定我制作的自定义模板是否为页面。在我的模板页面中使用或不使用“循环”并没有什么区别。

在里面edit_strain() is_page() 正在返回false。这和我使用get_posts 在里面get_user_strains()? 我听说我应该使用WP_Query() 但我真的不知道如何转换get_posts() 变成一个WP_Query().

这就是问题所在吗
我已搜索了Stack Exchange,但找不到任何解决我的问题的方法。

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

行动init 发生时间太早,无法知道当前页面是否应显示页面。你至少要等到template_redirect. 但如果要在页面上打印某些内容,请使用the_content.

结束

相关推荐

有什么办法可以重写wooCommerce-template.php吗?

我正在尝试对woocommerce模板进行一些自定义。php文件,但我担心它会在下次更新时被覆盖。我想知道是否有一种方法可以从函数重写函数。php和另一个加载我的自定义文件。这是woocommerce中的功能:public function include_template_functions() { include_once( \'woocommerce-template.php\' ); } 我想知道是否有一种方法可以覆盖它,或者其他方法可以覆盖它。