我正在写一个压缩页面插件,我遇到了一个问题。该插件需要能够显示带有自定义模板的自定义帖子类型,并且能够用于主页。
因此,我得到了为自定义帖子类型设置模板的代码:
add_filter(\'single_template\', \'my_custom_template\');
function my_custom_template($single) {
global $wp_query, $post;
if ($post->post_type == "squeeze_page"){
if(file_exists(ABSPATH . \'/wp-content/plugins/wpsqueezr/squeeze_page.php\'))
return ABSPATH . \'/wp-content/plugins/wpsqueezr/squeeze_page.php\';
}
return $single;
}
这对于显示自定义帖子类型很好。将其添加到阅读设置中可以:
add_filter( \'get_pages\', \'add_my_cpt\' );
function add_my_cpt( $pages )
{
$my_cpt_pages = new WP_Query( array( \'post_type\' => \'squeeze_page\' ) );
if ( $my_cpt_pages->post_count > 0 )
{
$pages = array_merge( $pages, $my_cpt_pages->posts );
}
return $pages;
}
现在这里是混乱的地方。这一切都很好,但如果您将自定义帖子类型设置为主页,它会重定向到自定义帖子类型页面,这不好。
我找到了将自定义帖子类型添加到frontpage的代码,但它没有显示我为单个页面设置的自定义模板:
function enable_front_page_stacks( $query ){
if(( ! isset($query->query_vars[\'post_type\']) || \'\' == $query->query_vars[\'post_type\']) && 0 != $query->query_vars[\'page_id\'])
$query->query_vars[\'post_type\'] = array( \'page\', \'squeeze_page\' );
}
add_action( \'pre_get_posts\', \'enable_front_page_stacks\' );
我需要在主页上显示自定义帖子类型的自定义模板,而不是主页模板中的自定义帖子类型。我尝试了home\\u模板过滤器,但没有任何效果。
有什么想法吗?
编辑:解决了这个问题,只需添加一个page\\u template筛选器和一个\\u template筛选器。我希望这对其他人有帮助!干杯