一个自定义帖子类型两个不同的模板

时间:2011-12-14 作者:lonchbox

我有一个带有一些元盒的自定义帖子类型,因为这个CPT有自己的单个CPT。我在php中显示他的内容、元框和url域。通信/CPT。但我需要知道的是,是否有可能创建第二个模板,其中我只显示这个CPT和url域的元数据库内容。com/CPT/metaboxes

希望它有意义并有一个解决方案:P

谢谢大家。

1 个回复
SO网友:Rutwick Gangurde

是的,这是可能的。您必须编写一个自定义重写规则,以便domain.com/cpt/metaboxes 要访问的url。假设您的cpt是“电影”,它的单曲将作为domain.com/movie/slug. 创建一个名为“Metaboxes”的新页面(slug应为“Metaboxes”)。将以下代码添加到函数中。php。

<?php
add_action(\'init\', \'add_my_rule\');

function add_my_rule()
{
    global $wp_rewrite, $wp;
    $wp_rewrite->add_rule(\'^movie/([^/]+)/metaboxes\', \'index.php?pagename=metaboxes&movie_slug=$matches[1]\', \'top\');
    $wp->add_query_var(\'movie_slug\');
}
?>
添加此代码后,转到Settings > Permalinks 然后点击save(保存)(不要错过这一步!)。确保已打开相当长的永久链接。

下一步是访问movie_slug 在此页上。创建一个将显示元数据库内容的模板,并将此模板分配给Metaboxes 上面创建的页面。将以下代码添加到此模板:

<?php
/*
 * Template Name: Metaboxes
 */

//this will give you the cpt slug.
$slug = get_query_var(\'movie_slug\');

//now we get the cpt object using the slug
$args=array(
    \'name\' => $slug,
    \'post_type\' => \'movie\',
    \'post_status\' => \'publish\',
    \'showposts\' => 1,
    \'caller_get_posts\'=> 1
);

$movie = get_posts($args);

//we need only the ID
$movie_id = $movie[0]->ID;

//Use the $movie_id to get all the metaboxes content, means the post meta/custom values and build your markup around it.
?>
我还没有尝试过这个,但我相信它将与一个小的调整工作。如果您遇到困难或遇到任何错误,请告诉我。

结束

相关推荐

Metabox Data not being saved

我的元框无法保存数据。这是一个选择表单字段,当我选择并更新帖子时,刷新时没有选择任何内容。所以它在PasteBin上。http://pastebin.com/tfrgasQC有人能告诉我为什么我的代码不能让wordpress用数据保存帖子吗?谢谢