好的,首先,我要将你的视频类别重命名为video_category
因此它与内置category
.
也就是说,我能想到的最简单的方法就是用一个短代码来证明这一点。
一些初始准备,设置帖子类型(为了演示,删除callas toregister_post_type
和register_taxonomy
如果要将其粘贴到函数中。php文件),并添加短代码。
<?php
add_action(\'init\', \'wpse28770_add_types\' );
function wpse28770_add_types()
{
register_post_type( \'video\', array( \'public\' => true, \'label\' => \'Videos\' ) );
register_taxonomy( \'video_category\', \'video\', array( \'label\' => \'Video Category\' ) );
add_shortcode( \'wpse28770videos\', \'wpse28770_shortcode_cb\' );
}
我们有一个快捷码回调函数,它完成了所有的工作。首先,您需要在
video_category
分类学
接下来,遍历每个术语,通过tax_query
在里面get_posts
. 然后循环浏览帖子并将其添加到列表中。
<?php
function wpse28770_shortcode_cb()
{
// get the terms
$terms = get_terms( \'video_category\' );
// no terms? bail.
if( ! $terms ) return \'\';
$out = \'\';
// loop through the terms
foreach( $terms as $term )
{
// get videos in each term
$videos = get_posts(array(
\'post_type\' => \'video\',
\'tax_query\' => array(
array(
\'taxonomy\' => \'video_category\',
\'field\' => \'id\',
\'terms\' => $term->term_id,
\'operator\' => \'IN\'
)
)
));
// no videos? continue!
if( ! $videos ) continue;
$out .= \'<h2>\' . esc_html( $term->name ) . \'</h2>\';
$out .= \'<ul>\';
// loop through the video posts
foreach( $videos as $v )
{
$link = sprintf(
\'<a href="%s">%s</a>\',
esc_url( get_permalink( $v ) ),
esc_html( $v->post_title )
);
$out .= \'<li>\' . $link . \'</li>\';
}
$out .= \'</ul>\';
}
return $out;
}
您只需在
functions.php
文件,并调用任何你喜欢的模板。。。
<?php echo wpse28770_shortcode_cb(); ?>
这就是整件事
as a plugin. 希望这至少能让你开始!