Сортировка записей по произвольному полю в административном разделе WordPress

По-умолчанию фильтровать записи можно по датам и рубрикам, а мы будем по произвольным полям. И не только записи, но и страницы, и вообще любые другие

post_type

.


Допустим, у нас есть продукты

post_type product

. Нам нужно их фильтровать в административном разделе сайта по статусу (произвольное поле

status

), которое имеет два значения: «в наличии» (значение

in_stock

) и «продано» (значение

sold

).

Правки вносим в

functions.php

файл темы. Для этого он и существует.

<?php
/*  Добавляем нижеописаную функцию к хуку restrict_manage_posts */add_action( 'restrict_manage_posts', 'custom_restrict_manage_posts__show_field' );

/*  Описание функции, которая выводит в админке поле  */function custom_restrict_manage_posts__show_field() {

  /*  post_type по-умолчанию или из GET */ 
  $type = 'post';
  if (isset($_GET['post_type'])) 
    $type = $_GET['post_type'];

  /*  Если post_type "product" */  if ($type == 'product'): 

    /*  Указываем значения для выпадающего списка */    $values = array(
      'В наличии' => 'in_stock', 
      'Продано'   => 'sold',
    ); ?>
    <select name="status">
      <option value="">Все статусы</option>
      <?php 
        $current_v = isset($_GET['status'])? $_GET['status']:''; 
        foreach ($values as $label => $value) :
        printf
          (
            '<option value="%s"%s>%s</option>',
            $value,
            $value == $current_v ? ' selected="selected"':'',
            $label
          );
        endforeach;
      ?>
    </select>
  <?php 
  endif; 
} 

/*  Добавляем нижеописаную функцию к хуку parse_query */add_filter( 'parse_query', 'custom_posts_filter' ); 

/*  Описание функции, которая фильтрует данные   */ 
function custom_posts_filter( $query ) { 
    
  global $pagenow; 
  $type = 'post'; 

  if (isset($_GET['post_type'])) 
    $type = $_GET['post_type']; 
  
  $query->query_vars['meta_value'] = $_GET['status'];
    
}

На этом все!


admin

Recent Posts

Что такое Zulip

Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…

4 месяца ago

Что такое Zookeeper

Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…

4 месяца ago

Что такое Zimbra

Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…

4 месяца ago

Что такое Zabbix

Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…

4 месяца ago

Что такое YouTube

YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…

4 месяца ago

Что такое yota

Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…

4 месяца ago