显示某个类别中的帖子,并按高级自定义字段排序

时间:2015-08-08 作者:ali atashinbar

我希望代码显示显示一些类别和排序的acf字段。

例如,显示类别122123124中的所有帖子,并按acf对所有帖子进行排序(例如:lastname)。请为我写代码。

我的代码是:

<?php

query_posts(\'cat=1,2&post_status=publish&posts_per_page=1\');

if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

<a href="<?php the_permalink(); ?>"><?php the_title (); ?></a>

<?php

endwhile; else:

endif;

//Reset Query

wp_reset_query(); ?>
请帮帮我。谢谢

2 个回复
SO网友:cybmeta

首先,你应该停止使用query_posts(). As said in the documentation:

注意:此功能不适用于插件或主题。如后文所述,有更好、性能更好的选项来更改主查询。query\\u posts()是一种过于简单且有问题的方法,通过将页面的主查询替换为新的查询实例来修改它。

您可以在中找到更全面的解释this answer by @Rast.

对于新循环,正如您在问题描述中所做的那样,最好使用WP_Query class. 使用此类,您可以使用cat 参数从特定类别获取帖子并合并meta_key (或meta_query) 具有orderorderby 参数按自定义字段排序。如果自定义字段是由ACF或任何其他方式创建的,则不需要,只需要元字段的键。

$args = array (
    \'cat\'      => \'122,123,124\',
    // Change the_identifier_key_of_the_field with the identifier of your field
    \'meta_key\' => \'the_identifier_key_of_the_field\',
    // Set order to ASC or DESC
    \'order\'    => \'ASC\',
    // Use \'orderby\'  => \'meta_value_num\' for numeric meta fields
    \'orderby\'  => \'meta_value\',
);

$query = new WP_Query( $args );

if( $query->have_posts() ) {

    while( $query->have_posts() ) {

         $query->the_post();

         ?>

         <a href="<?php the_permalink(); ?>"><?php the_title (); ?></a>

         <?php

    }

}

// Reset original post data after the secondary loop
wp_reset_postdata();

SO网友:ali atashinbar

谢谢你的回答。

我的代码是:

<?php 

$args = array (
\'cat\'      => \'144,122,124,125,126\',
\'meta_key\' => \'lastname\',
// Set order to ASC or DESC
\'order\'    => \'DESC\',
// User \'orderby\'  => \'meta_value_num\' for numeric meta fields
\'orderby\'  => \'meta_value\',
);

$query = new WP_Query( $args );

if( $query->have_posts() ) {

while( $query->have_posts() ) {

     $query->the_post();

     ?>
    <div class="nzr_gallery">
        <a href="<?php the_permalink();?>">
            <?php the_post_thumbnail(\'thumbnail\');?>
            <h2><?php the_title();?></h2>
        </a>
    </div>

<?php

}

}

// Reset original post data after the secondary loop
wp_reset_postdata(); ?>
我将此代码放在页面成员中。php并在wordpress中创建一个页面,然后将模板提交给成员。当我选择一些类别时,此代码显示主题的交叉帖子,而不显示所有主题。

结束

相关推荐

Categories' hierarchy in URL

我目前正在处理的网站中的帖子都有多个层次分类。例如:Source - Books -- Moby Dick -- Sherlock Holmes 永久链接设置为/%category%/%postname%/. 然而,一篇文章的URL并不包括所有的子类别——我得到的只是site.com/source/books/*postname*, 尽管这篇文章在来源上没有分类,但只在书籍+白鲸上。有人能帮我找出如何调整这种行为吗?非常感谢。