通过标签收集自定义帖子类型
Posted
技术标签:
【中文标题】通过标签收集自定义帖子类型【英文标题】:Gathering Custom post types via tags 【发布时间】:2015-07-06 05:50:28 【问题描述】:我已使用以下代码设置了名为“部门”的自定义帖子类型:
register_post_type( 'sectors',
array(
'labels' => array(
'name' => __( 'Sectors' ),
'singular_name' => __( 'sectors' ),
),
'has_archive' => true,
'hierarchical' => true,
'menu_icon' => 'dashicons-heart',
'public' => true,
'rewrite' => array( 'slug' => 'your-cpt', 'with_front' => false ),
'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'revisions', 'page-attributes' ),
'taxonomies' => array( 'your-cpt-type', 'post_tag' ),
));
这让我可以将“标签”添加到自定义帖子类型页面。
现在,我正在尝试通过某些标签显示此自定义帖子类型的页面。
我已经设法通过使用以下代码来处理帖子:
<?php
$args = array('tag_slug__and' => array('featuredpost1'));
$loop = new WP_Query( $args );
while ($loop->have_posts() ) : $loop->the_post();
?>
<h5 class="captext"><?php the_title(); ?></h5>
<hr>
<div style="float: left; padding-right:20px;">
<?php the_post_thumbnail( 'thumb' ); ?>
</div>
<?php the_excerpt(); ?>
<a href="<?php echo get_permalink(); ?>"> Read More...</a>
<?php endwhile; ?>
<?php wp_reset_query(); ?>
这将获取所有带有“featuredpost1”标签的帖子。
自定义帖子类型如何实现?
编辑/更新:
这确实有效,有没有办法可以在不同的页面上使用此功能?比如在我的主页上通过标签获取帖子,那么这个页面上的任何更新都会在主页上更新??
【问题讨论】:
有人有什么想法吗? 您是否已将"post-type" => "sectors"
添加到您的参数中?
您在哪个页面/模板上执行此操作。你真的需要自定义查询吗
【参考方案1】:
如果您正在寻找带有标签名称的自定义帖子类型,则需要在查询参数中指定:
<?php $query = new WP_Query( array( "post_type" => "sectors", "tag" => "featuredpost1" ) );
while ($query->have_posts()) : $query->the_post();
the_title();
endwhile; ?>
希望这会对你有所帮助。
【讨论】:
【参考方案2】:Cayce K 的解决方案将完美运行。我还有第二种方式:
首先:将您的自定义帖子类型添加到主查询。您可以通过在functions.php
中添加几行来实现这一点。
<?php
add_action( 'pre_get_posts', 'add_my_post_types_to_query' );
function add_my_post_types_to_query( $query )
// Leave the query as it is in admin area
if( is_admin() )
return $query;
// add 'sectors' to main_query when it's a tag- or post-archive
if ( is_tag() && $query->is_main_query() || is_archive() && $query->is_main_query() )
$query->set( 'post_type', array( 'post', 'page', 'sectors', 'add_more_here' ) );
return $query;
?>
第二:这样做之后,您可以在主题中使用archive.php
、tag.php
或tag-myTagName.php
来显示该标签的存档页面,包括您的自定义帖子类型' 部门'。您无需设置特殊查询,只需将所需标签的链接添加到您的菜单之一 - 您的标准循环将完成其余工作。
提示:
如果您只想为完整的自定义帖子类型“sectors”创建存档页面,您还可以使用 WP 插件 Post Type Archive Link。
【讨论】:
很好的开箱即用的想法。这是一些有趣的知识。感谢您发布此答案!【参考方案3】:Wordpress Query Parameters
如果你添加 ::
$args = array(
'post_type' => array( 'sectors' ) //, 'multiple_types_after_commas' )
);
$query = new WP_Query( $args );
或
$query = new WP_Query( 'post_type=sectors' );
这将帮助您通过查询定位您的帖子类型。
看起来像
$args = array(
'tag_slug__and' => array('featuredpost1'),
'post_type' => array( 'sectors' )
);
$loop = new WP_Query( $args );
while ($loop->have_posts() ) : $loop->the_post();
【讨论】:
谢谢你,这很完美!另外,感谢 Zork 的回答和 Selva。以上是关于通过标签收集自定义帖子类型的主要内容,如果未能解决你的问题,请参考以下文章