通过标签收集自定义帖子类型

2022-08-30 23:37:00

我使用以下代码设置了名为“扇区”的自定义帖子类型:

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”的帖子。

使用自定义帖子类型如何实现这一点?

编辑/更新:

这现在确实有效,有没有办法可以在其他页面上使用此功能?例如,在我的主页上通过标签获取帖子,因此此页面上更新的内容都将在主页上更新??


答案 1

字压查询参数

如果添加 ::

$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();

答案 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;
    }
?>

第二:完成此操作后,您可以在模版中使用 、 或 a 来显示该标签的存档页面,包括您的自定义帖子类型“扇区”。您不必设置特殊查询,只需将指向所需标签的链接添加到其中一个菜单中 - 您的标准循环将完成其余工作。archive.phptag.phptag-myTagName.php

提示:

当您只想为完整的自定义帖子类型“扇区”创建存档页面时,您还可以使用WP插件帖子类型存档链接


推荐