Php如何使用wp_Query仅在当前分类中显示POST?

时间:2014-03-05 作者:jhon

很难得到我的分类法。php运行良好。

我使用分类法。php来列出我在特定类别中的所有帖子,但它显示了我在所有类别中的所有帖子。

这是我的代码:

<ul class="scenes cf">

<?php

$args1 = array(
  \'post_type\'=>\'artistes\',
  \'orderby\' => \'menu_order\',
  \'order\' => \'ASC\',
  \'meta_query\' => array(
        array(
            \'key\' => \'date_de_lartiste\',
            \'value\' => \'\',
            \'compare\' => \'LIKE\'
        ),
        array(
            \'key\' => \'heure_de_lartiste\',
            \'value\' => \'\',
            \'compare\' => \'LIKE\'
        )
    )
);

add_filter(\'posts_orderby\',\'orderbyreplace\');
$loop = new WP_Query( $args1 );
remove_filter(\'posts_orderby\',\'orderbyreplace\');
?>
<?php $todaysDate = date(\'Y/m/d\'); ?>
<?php if ($loop->have_posts() ) { while ( $loop->have_posts() ) { $loop->the_post(); ?>
<?php 
    $date = get_field(\'date_de_lartiste\'); 
    $newDate = date("d/m/Y", strtotime($date));
?>
<li>
    <div class="info">
        <?php the_post_thumbnail( \'artists_list\' )?>
        <p><?php the_title(); ?></p>
        <p class="music_style"><?php echo $newDate ?> - <?php the_field(\'heure_de_lartiste\'); ?></p>
    </div>
    <a href="<?php the_permalink(); ?>" class="read_more"><?php _e(\'Read More\'); ?></a>
</li>
<?php
    }
        } else {
            ?>
            <li class="cf">
                <p>No posts</p>
            </li>
            <?php
    }
        /* Restore original Post Data */
        wp_reset_postdata();
?>
</ul>
有人能帮我弄明白吗?如何仅显示当前分类中的帖子?

非常感谢,

Jhon公司

EDIT:

我知道这是最好的方法,但我只是用以下代码修复了它:

$category = get_query_var( \'term\' );
在我的$args中,我添加了:

\'tax_query\' => array(

    array(

        \'taxonomy\' => \'scenes\',

        \'field\' => \'slug\',

        \'terms\' => "$category"

        )

    ),

1 个回复
SO网友:Tom J Nowell

您没有提到您正试图通过元键过滤分类法归档,但这就是代码中发生的事情。

问题是,您正在放弃为您准备的分类查询(糟糕!在此过程中数据库工作加倍),并创建自己的查询,但您从未告诉它要查找哪个术语,WP\\U查询无法读懂思想,因此它会查看所有艺人,because you never told it which one to look for.

你应该使用pre_get_posts 筛选以在主循环查询发生之前修改查询参数。这样就不需要第二次查询,而且不会浪费时间

E、 g.排除类别:

// Load our function when hook is set
add_action( \'pre_get_posts\', \'rc_modify_query_exclude_category\' );

// Create a function to excplude some categories from the main query
function rc_modify_query_exclude_category( $query ) {

    // Check if on frontend and main query is modified
    if ( ! is_admin() && $query->is_main_query() && ! $query->get( \'cat\' ) ) {
        $query->set( \'cat\', \'-5\' );
    } // end if
}
Taken from remicorson.com

这样,您可以通过查看$query 对象,并添加meta_query 除其他事项外。这也简化了taxonomy.php 返回到标准的post循环,将所需的数据库工作量减半。

结束

相关推荐

提前注册Taxonomy,以便可以在unctions.php和admin-ajax.php中使用它

这是对this post, 概述在函数中无法使用get\\u terms函数的原因。php(实际上是通过ajax/admin\\u ajax.php调用)。我可以在任何帖子、任何页面上获取术语(自定义税),除了在我的ajax函数中。在转储get\\u terms的值时,我收到了可怕的“分类法不存在”错误。问题是,在调用函数查找术语后,分类法被注册。问题是,如何尽早注册税务以便使用此功能?注册自定义帖子类型和分类的代码是函数中的第一个。php(通过外部php提供,以保持functions.php干净)/**