TEMPLATE_REDIRECT不工作,显然没有原因

时间:2011-03-07 作者:Jared

我制作了一个插件template_redirect 对于自定义帖子类型squeezepages 它工作得很好,但我复制了完全相同的代码,将其放入一个新的插件中,激活了它(只做了一些小的调整,例如,我将自定义帖子类型改为newpages 还有template_redirect 是从另一个来源获取模板)而突然不起作用?

我可以同时激活两个插件,压缩页面可以工作,新页面不能。这让我很困惑。我甚至禁用了挤压页面插件,但它仍然不起作用。我尝试了所有的组合(只有几个),但仍然没有。似乎它没有任何理由起作用。我已经盯着同一个代码看了两个小时了,但我没能弄明白。

以下是我自定义帖子类型的代码:

add_action( \'init\', \'ifp_create_post_type\' );
function ifp_create_post_type() {
register_post_type( \'newpages\',
    array(
        \'labels\' => array(
            \'name\' => __( \'New Pages\' ),
            \'singular_name\' => __( \'New Page\' )
        ),
    \'public\' => true,
    \'menu_position\' => 5,
    \'rewrite\' => true,
    \'rewrite\' => array(\'slug\' => \'newpage\', \'with_front\' => FALSE),
    \'supports\' => array(\'title\', \'editor\', \'excerpt\', \'trackbacks\', \'custom-fields\', \'comments\', \'revisions\', \'thumbnail\', \'author\', \'page-attributes\')
    )
);
}
还有我的template_redirect:

function ifp_default_template() {
    if(get_post_type() == \'newpages\') : global $wp_query, $post, $posts;
    include(PLUGINDIR . \'/newpage/themes/default.php\');
    exit; endif;
}
add_action(\'template_redirect\', \'ifp_default_template\');

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

我解决了自己的问题。我需要把flush_rewrite_rules( false ); 在我的register_post_type 作用它不起作用的原因是因为它返回的页面有404错误,所以我发现这是一个永久链接问题,上面的代码为我解决了这个问题。

SO网友:Rarst

这里没有太多代码。。。让我们把它分解成可能出错的事情:

验证ifp_default_template()正在触发(例如,早期重定向可能包括另一个模板和模具,永远无法到达)。

验证get_post_type() 返回预期值。

验证是否正确生成了包含路径(我将使用plugins_url(), 它比从字符串构建路径更健壮)。

结束

相关推荐