Задавайте вопросы по курсам WordPress

Фильтрация статей и добавление даты к тегу title

Еще несколько полезных фрагментов кодов для читателей сайта.

Добавляем дату к тегу title ваших статей на сайте.

Иногда для того чтобы показать возраст статьи для поисковых систем используют дату в теге title. Дата в этом теге является метаданными для поисковиков. Сам так не делаю, но думаю, SEO специалисты могут оценить этот код. На мой взгляд, этом может быть полезно для новостных ресурсов.

add_filter( 'wp_title', 'append_to_title', 10, 3 );
function append_to_title($title) {
    $date = get_the_date();
    return $title .= " | ".$date;
}

 

Еще один просто бомбовый код, честно найденный в байнете )

Думаю многие сталкивались с проблемой, когда сайт начинает разрастаться и на нем много произвольных полей, в которых сложно найти нужную информацию. Например это может быть интернет магазин с полями содержащими тип товара по которому надо отфильтровать все эти товары. Недавно нашел решение этой задачи, как сделать выпадающий список для фильтрации по всем произвольным полям. Список появиться в верху над списком статей в админке.

Для решения этой задачи фильтрации такого типа добавляем код в файл function.php и радуемся результату. Код ниже:

add_filter( 'parse_query', 'ba_admin_posts_filter' );
add_action( 'restrict_manage_posts', 'ba_admin_posts_filter_restrict_manage_posts' );
function ba_admin_posts_filter( $query )
{
    global $pagenow;
    if ( is_admin() && $pagenow=='edit.php' && isset($_GET['ADMIN_FILTER_FIELD_NAME']) && $_GET['ADMIN_FILTER_FIELD_NAME'] != '') {
        $query->query_vars['meta_key'] = $_GET['ADMIN_FILTER_FIELD_NAME'];
    if (isset($_GET['ADMIN_FILTER_FIELD_VALUE']) && $_GET['ADMIN_FILTER_FIELD_VALUE'] != '')
        $query->query_vars['meta_value'] = $_GET['ADMIN_FILTER_FIELD_VALUE'];
    }
}
function ba_admin_posts_filter_restrict_manage_posts()
{
    global $wpdb;
    $sql = 'SELECT DISTINCT meta_key FROM '.$wpdb->postmeta.' ORDER BY 1';
    $fields = $wpdb->get_results($sql, ARRAY_N);
?>
<select name="ADMIN_FILTER_FIELD_NAME">
<option value=""><?php _e('Filter By Custom Fields', 'baapf'); ?></option>
<?php
    $current = isset($_GET['ADMIN_FILTER_FIELD_NAME'])? $_GET['ADMIN_FILTER_FIELD_NAME']:'';
    $current_v = isset($_GET['ADMIN_FILTER_FIELD_VALUE'])? $_GET['ADMIN_FILTER_FIELD_VALUE']:'';
    foreach ($fields as $field) {
        if (substr($field[0],0,1) != "_"){
        printf
            (
                '<option value="%s"%s>%s</option>',
                $field[0],
                $field[0] == $current? ' selected="selected"':'',
                $field[0]
            );
        }
    }
?>
</select> <?php _e('Value:', 'baapf'); ?><input type="TEXT" name="ADMIN_FILTER_FIELD_VALUE" value="<?php echo $current_v; ?>" />
<?php
}

Работу скрипта можно посмотреть на скриншоте:

Фильтр по произвольным полям

Код работает отлично, все проверил на тестовой площадке.


Купить хостинг WordPress
Репетитор по wordpress
Услуги репетитора онлайн. Список курсов которые я веду
  • Базовый курс по веб-дизайну;
  • Верстка сайтов;
  • Общий курс по CMS WordPress и продолжение курса по разработке шаблонов;
  • Разработка сайтов на PHP.
Подробнее читайте на странице репетитор по WordPress
*/

Николаенко Максим

Директор веб-студии ProGrafika. Занимаюсь разработкой, дизайном и продвижением веб-сайтов. Всегда рад новым читателям блога и хорошим клиентам.


Вам может также понравиться...

комментариев 8

  1. Евгений Горчак:

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

    У меня все записи имеют произвольное поле instock со значением 1 или 0. Сортировка со значением 1 работает нормально, а вот при попытке сортировать записи со значением 0 не получается, фильтр просто тупо выводит все записи рубрики, и со значением 0 и 1.

    Похоже код не хочет воспринимать значение 0 произвольного поля instock. Как научить его сортировать и по значению 0?

    У меня версия старенькая, 2.7.1, обновить пока не получается из-за несовместимости со сложным плагином онлайн магазина.

    Спасибо.

  2. Евгений Горчак:

    Это реально радует. И да, только что проверил, фильтр работает и со значением 00, только 0 не воспринимает.
    Ещё раз спасибо.

    • admin:

      Только что на тестовой площадке добавил 3 записи с новым произвольным полем. Для двух сделал значение 0, а для одного 1. В результате получилось отсеять только по нулевому значению, в результате получил 2 записи и по значению «1» тоже получил одну запись. Может что-то не так делаете, или может я вопроса не понял?

      • Евгений Горчак:

        Видимо у меня что-то не так с wordpress инсталляцией, вопрос правильно поняли, у меня по прежнему не удаётся сортировать по значению 0.
        Думаю что-же делать.

        • admin:

          Попробуй сделать другое произвольное поле с теми же параметрами, чтобы содержало 0 и 1, и попробуй по нему фильтровать. Если не получится, то возможно и в WordPress проблема. Можешь на тестовой площадке пробовать обновлять CMS, главное чтобы копия базы и файлов была )

  3. Евгений Горчак:

    Спасибо за удачную мысль, попробовал задать значение 0 другому полю и сортировка по 0 работает нормально. Значит проблема не в значении 0 и не в WordPress а именно в этом конкретном поле instock, именно в этом поле не получается сортировать по значению 0.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Шаблоны для WordPress
Самый лучший хостинг в Украине
Стабильный хостинг для Drupal