是的,这是可能的。您必须编写一个自定义重写规则,以便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.
?>
我还没有尝试过这个,但我相信它将与一个小的调整工作。如果您遇到困难或遇到任何错误,请告诉我。