一些帖子没有按分类术语显示

时间:2019-09-03 作者:zfors

我遇到了一些我以前从未见过的非常奇怪的事情。我正在尝试查询custom-post-type 并按自定义分类法将结果组织到组中term. 这个post 是一个项目,由taxonomy 州政府。

问题是,所有的状态都在打印出来,但其中一些状态没有显示任何关联的项目(即使它们有一些,也在切换hide_empty 之间truefalse 产生预期结果)。我尝试了一些术语名称的组合,但似乎只有在分类术语有两个词的名称时才会出现这种情况:例如,“北达科他州”。如果我将项目的状态更改为不同的(单一命名)状态,数据会显示出来。

通常这看起来像:

状态1

项目状态2

但有些州只显示其名称(分类术语名称),下面没有项目。

状态3

州4

我注意到这两个命名州的鼻涕虫被连接成了一个单词(northdakota), 所以我不确定这是否是造成这种情况的原因。我试着回到过去north-dakota 没有运气。删除后,数据库中是否存在可能存在冲突的地方?术语似乎没有垃圾页。

这是我使用Gutenberg和ACF Gutenblocks构建的第一个项目,但我不知道这是怎么造成的,尤其是因为我查询的所有数据都是这个特定块的核心部分。

我是错过了什么,还是这是某种错误?

<?php
$states = get_terms( array(
    \'taxonomy\'   => \'state\',
    \'hide_empty\' => true,
) );
foreach ( $states as $state ) {
    $state_name = $state->name;
    $state_slug = $state->slug;
    ?>
    <div class="state <?php echo esc_attr( $state_slug ); ?> mix">
        <h3 class="state-heading"><?php echo esc_attr( $state_name ); ?></h3>
        <?php
        $args = array(
            \'post_type\'      => \'project\',
            \'posts_per_page\' => - 1,
            \'orderby\'        => \'title\',
            \'order\'          => \'ASC\',
            \'tax_query\'      => array(
                array(
                    \'taxonomy\' => \'state\',
                    \'field\'    => \'name\',
                    \'terms\'    => $state_slug,
                ),
            ),
        );
        $loop = new WP_Query( $args );

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

            <div class="project">
                <div class="row">

                    <div class="col-md-6 d-flex flex-column justify-content-center">
                        <?php
                        $title     = get_the_title();
                        $excerpt   = get_the_excerpt();
                        $permalink = get_the_permalink();
                        echo \'<h4>\' . esc_attr( $title ) . \'</h4>\';
                        echo \'<p>\' . esc_attr( $excerpt ) . \'</p>\';
                        echo \'<div><a class="button" href="\' . esc_url( $permalink ) . \'">View</a></div>\';
                        ?>
                    </div>
                    <div class="col-md-6 d-flex align-items-center">
                        <?php the_post_thumbnail(); ?>
                    </div>

                </div>
            </div>

        <?php
        endwhile;

        wp_reset_postdata();
        ?>
    </div>
<?php }
?>

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

问题是你的tax_query — 这个field (数据库列名)与terms (数据库列值):

$args = array(
    ...
    \'tax_query\'      => array(
        array(
            \'taxonomy\' => \'state\',
            \'field\'    => \'name\',      // <- this should be set to \'slug\'
            \'terms\'    => $state_slug, // because you provided term slug
        ),
    ),
);
一、 e.如果您提供术语段塞(例如。foo-bar), 然后field 应该是slug; 如果您提供术语名称(例如。Foo Bar), 然后field 应该是name.

相关推荐

如何处理多个forloop?

I have and order\\u id as array但是wc_get_order 一次只接受一个id如何循环使用order\\u id并让项目id和项目名称的列表?我在课堂上使用这个。如果按如下所示传递单个id,则其工作正常 public function getStuffDone() { order_id =array(358,368) $order = wc_get_or