Intereting Posts
Как определить максимальную ширину для содержимого в редакторе сообщений на основе шаблона страницы? Неопределенное свойство: WP_Query :: $ post Импортер WordPress / проблема с изображениями add_action в пространстве имен не работает Как выделить текущую страницу в навигационном меню? Пользовательские типы сообщений и категории? как эхо метатег в заголовке с помощью php Плагины и резервное копирование не работают корректно на новом сервере Digital Ocean Предотвращение кэша для текстового содержимого, но не для файлов CSS и изображений Не удается сохранить метаданные типа персонализированного сообщения Интернационализировать сообщения в форумах без их перевода Исправлена ​​проблема с установкой плагинов с помощью Composer Неверное уведомление переменной пользовательского виджета WordPress Добавление функции в Genesis genesis_header Храните содержимое сообщения в переменной php и выведите их, используя цикл for

Добавление мета в wp_get_archives

Я пытаюсь добавить мета в wp_get_archives

 add_filter('getarchives_where','my_archives_filter'); function my_archives_filter($where_clause) { if(!is_user_logged_in()){ return "WHERE post_type = 'post' AND post_status = 'publish'"; }else{ return $where_clause; } } 

Я хочу добавить различие в получении сообщений, которые имеют meta private_page='0' когда пользователь не вошел в систему, но я не могу найти, как помещать мета-различие в return "WHERE post_type = 'post' AND post_status = 'publish'"; , Строка раньше – это то, что я пробовал, и ничего не возвращает.

1) Вам необходимо включить postmeta в запрос, который вы используете для архивных страниц, таким образом:

 add_filter('getarchives_join', 'my_archives_join_filter'); function my_archives_join_filter($join) { if (!is_user_logged_in()) { global $wpdb; return $join . "LEFT JOIN $wpdb->postmeta ON ($wpdb->posts.ID = $wpdb->postmeta.post_id)"; } return $join; } 

2) Вам нужно включить условие для выбора сообщения с определенным метафилем следующим образом:

 add_filter('getarchives_where', 'my_archives_where_filter'); function my_archives_where_filter($where_clause) { if (!is_user_logged_in()) { global $wpdb; $where_clause = "WHERE $wpdb->posts.post_type = 'post' AND $wpdb->posts.post_status = 'publish'"; return $where_clause . "AND $wpdb->posts.meta_key = 'private_page' AND $wpdb->posts.meta_value = '0'"; } return $where_clause; } 

Код, который не проверен для вашего конкретного случая. Но подход в целом должен быть ясным.

ОБНОВЛЕНИЕ: где достаточно любопытно проверить подход. Все работы;)