首页 > 解决方案 > 在 wordpress 主页上显示带有特定标签的帖子?

问题描述

我试图在我的 wordpress 主页上只显示带有“44”或“9”标签的帖子。

到目前为止,我在这里:

<?php get_header();?>

<div class="container pt-5 pb-5">

<h1><?php the_title();?></h1>

<?php

$query = new WP_Query( array( 'tag__in' => array( 44, 9 ) ) );

if ( $query->have_posts() ) :

while ( $query->have_posts() ) : $query->the_post();?>

    <?php the_content();?>

<?php endwhile; endif;?>

</div>

<?php get_footer();?>

但是我看不到帖子。我哪里错了?

标签: phphtmljquerywordpresstags

解决方案


在您的查询中,您已指定正在查找标签为 44 或 9 的帖子:

$query = new WP_Query( array( 'tag__in' => array( 44, 9 ) ) );

请注意,这不会获取所有带有这些标签的帖子 - 此查询中还有其他未在此处显示的约束。WP_Query有许多默认值,所以如果你没有在你的参数中设置它们,那么它将使用这些。这些默认参数包括:

  • post_status= public(除非用户已登录 - thenprivate也包括在内)
  • post_type= post(不是说这是特定的帖子类型,不包括所有帖子,例如自定义帖子类型)

由于您的查询没有返回任何内容,并且根据您为显示存在带有这些标签的帖子所做的调试,我们知道这些默认值之一会阻止查询获取您的帖子。

  1. 确认您要获取的帖子已发布公开
  2. 如果您使用的是自定义帖子类型,则需要将其包含到您的 WP_Query 中。例如,如果您的 CPT slug 是my_cpt这样,您可以按如下方式包含它:
$args = array( post_type' => 'my_cpt', 
               array( 'tag__in' => array( 44, 9 ) ) );
$query = new WP_Query( $args);

您还可以使用以下方式一次性搜索多种帖子类型'post_type' => array( 'post', 'my_cpt')

仅供参考,如果您不确定您的帖子的 slug 是什么,请转到 WP 管理员中列出您尝试获取的所有帖子的页面并查看 url - 它将包括这样的帖子类型:

https://www.example.com/wp-admin/edit.php?post_type=my_cpt

推荐阅读