Поддержка Проблемы и решения Отсортировать посты по произвольному полю (числа от меньшего к большему)

  • Здравствуйте.
    Делал маленький сайт с объектами по недвижимости, так как функционал должен быть вообще мизерный то с плагинами не заморачивался. Поставил toolset types, создал тип записей объекты и добавил к ним произвольные поля (цена, площадь, этаж и т.д.). Но потом (после наполнения сайта) выяснилась необходимость вывода записей в архиве в определенном порядке. От дешевых к дорогим.

    Как отсортировать записи, что бы выводились сразу дешевые (с наименьшим значением поля цены) к дорогим?

    Собственно сам вывод архива имеет такой вид

    
    				<main id="main" class="site-main masonry" data-columns role="main">
    				<?php
    				if ( have_posts() ) : ?>
    
    					
    						<?php 
    
    						while ( have_posts() ) : the_post(); ?>
    				<div class="item">
    
    				<div class="ob-block-arh">
    					<a title="<?php the_title_attribute(); ?>" href="<?php the_permalink(); ?>"><?php the_post_thumbnail('medium', array('class' => 'img-responsive')); ?></a>
    				
    					<div class="stoim-arhive">Стоимость: <?php echo types_render_field( "cena", array( ) ); ?> € <span class="id-ob"><?php echo types_render_field( "id-obzhekt", array( ) ); ?></span>
    					</div>
    					<div class="opis-ob-arh">	
    						<div class="blog-header">
    							<h3><a title="<?php the_title_attribute(); ?>" href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
    						<div class="blog-meta meta-arh fs-polya">
    							<div class="col-md-7 col-sm-7 col-xs-12">	
    								<i class="fa fa-check-square-o" aria-hidden="true"></i> Площадь: <?php echo types_render_field( "plo", array( ) ); ?>  
    								<br>
    								<i class="fa fa-check-square-o" aria-hidden="true"></i> До моря: <?php echo types_render_field( "metrmore", array( ) ); ?>  
    							</div>
    							<div class="col-md-5 col-sm-5 col-xs-12">	
    								<i class="fa fa-check-square-o" aria-hidden="true"></i> Комнат:  <?php echo types_render_field( "komn", array( ) ); ?>
    								<br>
    								<i class="fa fa-check-square-o" aria-hidden="true"></i> Спален:  <?php echo types_render_field( "spalni", array( ) ); ?>
    							</div>
    							
    						</div><!-- end blog-meta -->
    						</div><!-- end blog-header -->
    						<div class="clear"></div>
    						<div class="blog-desc">
    							<?php the_excerpt(); ?>
    						</div><!-- end blog-desc -->
    				</div>
    				</div>
    				</div>
    
    			<?php endwhile; ?>
    
    					
    
    					<div class="clearfix"></div>
    
    				<?php else : ?>
    
    					<p><?php _e( 'Sorry, no posts matched your criteria.', 'easyblog' ); ?></p>
    
    				<?php endif; ?>
    
    				</main>
    
Просмотр 6 ответов — с 1 по 6 (всего 6)
  • Модератор Denis Yanchevskiy

    (@denisco)

    WordPress-разработчик, denisco.pro

    Здравствуйте.

    Думаю, это должно выглядеть как-то так:

    
    function denisco_pre_get_posts($query) {
        if (!is_admin() && $query->is_main_query()) {
            if ($query->is_archive && $query->query['post_type'] == 'property') {
                $query->set('meta_key', 'cena');
                $query->set('orderby', 'meta_value_num');
                $query->set('order', 'ASC');
            }
        }
    }
    
    add_action('pre_get_posts', 'denisco_pre_get_posts');
    

    «property» нужно заменить на название Вашего типа записей.

    • Ответ изменён 7 лет, 7 месяцев назад пользователем Denis Yanchevskiy.

    Поставил в файл функций код, заменил «property» на название произвольного типа записей «obekti»
    Все объекты скрылись, появилась надпись:

    Sorry, no posts matched your criteria.

    а cena то точно произвольное поле, а не какая-то приблуда от плагина?

    В плагине написано произвольные поля. Вот я уже тоже начал задумываться что это вообще такое, может по другому работает

    Модератор Yuri

    (@yube)

    В плагине написано произвольные поля.

    Попадался мне какой-то плагин, который произвольные поля делал в своей отдельной таблице.

    Посмотрел на оф. сайте, там есть дополнительный плагин с сортировкой записей.

    Если он делает отдельной таблицей, то все же можно произвести сортировку в ручную?

Просмотр 6 ответов — с 1 по 6 (всего 6)
  • Тема «Отсортировать посты по произвольному полю (числа от меньшего к большему)» закрыта для новых ответов.