
Фільтрування статей та додавання дати до тега title
Ще кілька корисних фрагментів кодів для читачів сайту.
Додаємо дату до тега title ваших статей на сайті.
Іноді для того, щоб показати вік статті для пошукових систем, використовують дату в тезі title. Дата в цьому тегу є метаданими для пошукових систем. Сам так не роблю, але думаю, SEO фахівці можуть оцінити цей код. На мій погляд, цьому може бути корисно для ресурсів новин.
1 2 3 4 5 | add_filter( 'wp_title', 'append_to_title', 10, 3 ); function append_to_title($title) { $date = get_the_date(); return $title .= " | ".$date; } |
Ще один просто бомбовий код, чесно знайдений у байнеті )
Думаю багато хто стикався з проблемою, коли сайт починає розростатися та на ньому багато довільних полів, у яких важко знайти потрібну інформацію. Наприклад це може бути інтернет магазин з полями, що містять тип товару за яким треба відфільтрувати всі ці товари. Нещодавно знайшов вирішення цього завдання, як зробити список, що випадає, для фільтрації по всіх довільних полях. Список з'явиться у верху над списком статей в адмінці.
Для вирішення цього завдання фільтрації такого типу додаємо код у файл function.php і радіємо результату. Код нижче:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | 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 } |
Роботу скрипту можна переглянути на скріншоті:
Код працює чудово, все перевірив на тестовому майданчику.

/*

- Базовий курс з веб-дизайну;
- Верстка сайтів;
- Загальний курс CMS WordPress та продовження курсу з розробки шаблонів;
- Розробка сайтів на PHP.
Дякую за чудове доповнення. Код протестила, в цілому працює, сортує по всіх довільних полях, Крім одного, а саме це мені і потрібно було.
У мене всі записи мають довільне поле instock зі значенням 1 або 0. Сортування зі значенням 1 працює нормально, а ось при спробі сортувати записи зі значенням 0 не виходить, фільтр просто тупо виводить усі записи рубрики, та зі значенням 0 і 1.
Схоже, код не хоче сприймати значення 0 довільного поля instock. Як навчити його сортувати та за значенням 0?
У мене версія старенька, 2.7.1, оновити поки не виходить через несумісність зі складним плагіном онлайн магазину.
Дякую.
Постараюся ввечері подивитись
Це реально тішить. І це, щойно перевірив, фільтр працює і зі значенням 00, тільки 0 не сприймає.
Ще раз дякую.
Щойно на тестовому майданчику додав 3 записи з новим довільним полем. Для двох зробив значення 0, а для одного 1. В результаті вдалося відсіяти тільки за нульовим значенням, в результаті отримав 2 записи та за значенням “1” теж отримав один запис. Може, щось не так робите, чи може я питання не зрозумів?
Мабуть, у мене щось не так з wordpress інсталяцією, питання правильно зрозуміли, у мене, як і раніше, не вдається сортувати за значенням 0.
Думаю що робити.
Спробуй зробити інше довільне поле з тими самими параметрами, щоб утримувало 0 і 1, і спробуй по ньому фільтрувати. Якщо не вийде, то можливо і в WordPress проблема. Можеш на тестовому майданчику пробувати оновлювати CMS, головне щоб копія бази та файлів була )
Дякую за вдалу думку, спробував задати значення 0 іншому полю та сортування по 0 працює нормально. Значить, проблема не в значенні 0 і не в WordPress, а саме в цьому конкретному полі instock, саме в цьому полі не вдається сортувати за значенням 0.
Радий що вийшло, якщо що пишіть як вирішите задачу повністю.