帮助按标题、升序对自定义查询进行排序

时间:2015-10-21 作者:codeview

我有一个旧项目(自定义帖子类型查询),需要修改,我的记忆/技能水平不足,无法做什么。使用下面的代码,I\'m needing to return the first query in alphabetical order, by title. 使用orderby => titleorder => asc (第9行和第10行)无效。不过,它在第二个查询(第39行和第40行)中起作用。我最初让一位同事帮我设置,但他无法帮助我进行调整。SE社区的任何帮助都将不胜感激。

<?php get_header(); ?>
  <h1>Properties in <?php the_terms(\'\', \'region\');?></h1>
        <?php 
            $queried_object = get_queried_object();
            $term_id = $queried_object->term_id;
            $args = array(
                    \'post_type\' => \'rental\',
                    \'posts_per_page\' => -1,
                    \'orderby\' => \'title\',
                    \'order\'   => \'ASC\',
                                \'tax_query\' => array(
                                    array(
                                        \'taxonomy\' => \'region\',
                                        \'field\' => \'slug\',
                                        \'terms\' => ".$queried_object->slug."
                                    )
                                )
                        );
          $query = get_posts( $args );
          $property=array();
           if (have_posts()) : while (have_posts()) : the_post(); ?>
             <?php $term_list = wp_get_post_terms($post->ID, \'property\', array("fields" => "ids"));
            foreach($term_list as $id)
            {
              array_push($property,$id);
            }
            ?>
             <?php endwhile; endif; // done our wordpress loop. Will start again for each category ?>
                        <?php wp_reset_query();
                $property=array_unique($property); 
                foreach($property as $ids)
                {$terms=get_term_by(\'id\', $ids, \'property\');
                ?><h1><?php echo $terms->name ?></h1><?php 
                ?>
                <?php
                  $args1 = array(
        \'post_type\' => \'rental\',
        \'posts_per_page\' => -1,
        \'orderby\' => \'title\',
        \'order\'   => \'ASC\',
        \'tax_query\' => array(
            array(
            \'taxonomy\' => \'property\',
            \'field\' => \'id\',
            \'terms\' => $ids

             ),
           array(\'taxonomy\' => \'region\',
                                        \'field\' => \'slug\',
                                        \'terms\' => ".$queried_object->slug.")
          )
        );
        $query1 = new WP_Query( $args1 );
              foreach($query1->posts as $posts)
              {
                $region_array=get_the_terms($posts->ID,\'region\');
                $property_array = get_the_terms( $posts->ID, \'property\' );
                $bedrooms_array = get_the_terms(  $posts->ID, \'bedrooms\' );
                $bathrooms = get_the_terms(  $posts->ID, \'bathrooms\' );
                $views = get_the_terms(  $posts->ID, \'view\' );

                $rows = get_field(\'rental_images\',$posts->ID); // get all the rows
                $first_row = $rows[0]; // get the first row
                $first_row_image = $first_row[\'rental_images-image\' ]; // get the sub field value 
                $image = wp_get_attachment_image_src( $first_row_image, \'thumbnail\' );
              ?>
                <div class="rental">
                  <div class="pic">
                    <a href="<?php echo get_permalink($posts->ID);?>"><img src="<?php echo $image[0]; ?>" /></a>
                  </div><!-- .pic -->
                  <div class="text">
                        <ul>
                            <li><?php echo $posts->post_title ?></li>
                                                <?php 
                            if($bedrooms_array!=\'\' )
                            {$i=0;
                              ?><li>Bedrooms:<?php
                            foreach($bedrooms_array as $bed)
                            {
                              if($i==0)
                              {
                                $i=1;
                              ?>
                               <?php echo $bed->name; ?>
                            <?php }
                            else
                            {
                              echo ", ".$bed->name;
                            }
                             }
                            ?></li><?php
                            }
                            else
                            {
                            }?>
                                                 <?php
                            if($bathrooms!=\'\')
                            {?><li>Bathrooms: <?php
                            $i=0;
                            foreach($bathrooms as $bath)
                            {
                              if($i==0)
                              {
                                echo $bath->name;
                                $i=1;
                              }
                              else
                              {
                                echo ", ".$bath->name;
                              }}?></li><?php
                            }?>
                                              <?php 
                            if($views!=\'\')
                            {?><li>View: <?php
                            $i=0; 
                            foreach($views as $v)
                            {
                              if($i==0)
                              {
                                $i=1;
                                echo $v->name;  
                              }
                              else
                              {
                              echo ", ".$v->name;
                              }
                            }?></li><?php }?>
                                        </ul>
                            </div><!-- .text -->
                        </div><!-- .rental -->
              <?php  }
              }?>
<?php get_footer(); ?>

1 个回复
SO网友:ngearing

我认为您需要了解一下Wordpress中循环的工作原理:https://codex.wordpress.org/The_Loop

以及WP\\U查询类如何:https://codex.wordpress.org/Class_Reference/WP_Query

我假设你只需要2个循环,目前你有3个。

第19行将帖子存储在var$查询中,然后什么也不做。

第21行,这是您的主要不变循环。

第54行,你的同事帮你做什么?似乎在起作用。

因此,您需要做的是将参数从第一个循环传递到第二个循环。

您可以通过像在第53行中一样进行新的WP\\U查询来实现这一点。

$query = get_posts( $args ); // line 19
成为:

$query = new WP_Query( $args );
并使用have\\u posts()函数遍历结果。

if( $query->have_posts() ) : while( $query->have_posts() ) : $query->the_post(); // line 21

相关推荐

如何读取WordPress$Query关联数组(散列)键的值

WordPress编程新手(来自更为传统的环境),并试图了解其一些“独特”特性。我们的网站上有一个目录页,此代码驻留在functions.php, 如果条件为true,则调整结果。if( $query->is_post_type_archive( \'directory\' ) ){ ...//do stuff } 我想知道如何获取is_post_type_archive 这就是“目录”当我对值使用测试时。。。var_dumb($query->is_post