В этом руководстве показаны два разных метода выполнения расширенных запросов WordPress при использовании Oxygen.
Начиная с версии 3.8 Alpha 1, Oxygen поставляется с расширенной опцией в настройках WP Query для компонентов Easy Posts и Repeater. Это позволяет нам создавать сложные запросы без написания кода (в значительной степени).
Например, давайте покажем список сообщений текущего пользователя, вошедшего в систему, на статической странице с помощью Easy Posts.
Добавьте компонент Easy Posts > Query > advanced.
Выберите наиболее близкий из доступных пресетов и отредактируйте запрос или начните с нуля.
В этом случае давайте выберем последний «Сообщения автора текущего сообщения или архива - Posts by author of current post or archive». После чего нажмите «Редактировать запрос - Edit Query».
Значением параметра author с этим предустановленным значением является ID автора текущего поста, а это не то, что нам нужно. Вместо этого нам нужно, чтобы значение было идентификатором текущего пользователя, вошедшего в систему.
Поэтому нажмите кнопку данных (data button) для ввода авторского значения, затем возвращаемое значение PHP-функции (PHP Function Return value).
Имя функции: get_current_user_id
Щелкните ВСТАВИТЬ.
После этого Oxygen должен сгенерировать этот шорткод:
0
Затем добавьте еще один параметр для установки post_type в post.
Проверьте интерфейс, и вы должны увидеть только те сообщения, которые были опубликованы вами.
В практическом сценарии вы хотели бы установить это так, чтобы оно выводилось только в том случае, если пользователь вошел в систему и показывает заголовок/текст, который читается что-то вроде
You need to be <a href="/wp-login.php/">logged in</a> to view your posts.
с установленным условием для вывода только в том случае, если пользователь не вошел в систему.
Для разработчиков, которые хотят полной свободы или предпочитают вручную кодировать параметры запроса WP, есть метод pre_get_posts.
Продолжая предыдущий пример перечисления сообщений вошедшим в систему пользователем на статической странице с помощью Easy Posts, вы должны сделать это следующим образом:
Добавьте компонент Easy Posts и задайте для запроса пользовательский или ручной режим в зависимости от того, хотите ли вы отображать нумерацию страниц или нет соответственно. Выберите тип поста.
Помните, что для того, чтобы не отображать нумерацию страниц, вам нужно добавить &no_found_rows=true в строку запроса вручную.
Добавьте блок кода (Code Block), содержащий этот код, над Easy Posts:
<?php add_action( 'pre_get_posts', 'wpdd_published_by_current_user' ); function wpdd_published_by_current_user( $query ) { // remove the filter; the query is done. remove_action( 'pre_get_posts', 'wpdd_published_by_current_user' ); $query->set( 'author', get_current_user_id() ); } ?>
Совет: при написании запросов вручную это обязательная ссылка.
Проверьте внешний интерфейс, и вы должны увидеть только сообщения, которые были опубликованы вами (пользователем, вошедшим в систему в данный момент).