Сайты на заказ > Сайтостроение > Расширенные запросы в Oxygen Builder

Расширенные запросы в Oxygen Builder

Расширенные запросы в Oxygen BuilderВ этом руководстве показаны два разных метода выполнения расширенных запросов WordPress при использовании Oxygen.

Способ 1: Использование опции Advanced WP Query в Easy Posts / Repeater

Начиная с версии 3.8 Alpha 1, Oxygen поставляется с расширенной опцией в настройках WP Query для компонентов Easy Posts и Repeater. Это позволяет нам создавать сложные запросы без написания кода (в значительной степени).

Например, давайте покажем список сообщений текущего пользователя, вошедшего в систему, на статической странице с помощью Easy Posts.

Добавьте компонент Easy Posts > Query > advanced.

Выберите наиболее близкий из доступных пресетов и отредактируйте запрос или начните с нуля.

Расширенные запросы в Oxygen Builder

Расширенные запросы в Oxygen Builder

В этом случае давайте выберем последний «Сообщения автора текущего сообщения или архива - 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.

Расширенные запросы в Oxygen Builder

Проверьте интерфейс, и вы должны увидеть только те сообщения, которые были опубликованы вами.

В практическом сценарии вы хотели бы установить это так, чтобы оно выводилось только в том случае, если пользователь вошел в систему и показывает заголовок/текст, который читается что-то вроде

You need to be&nbsp;<a href="/wp-login.php/">logged in</a>&nbsp;to view your posts.

с установленным условием для вывода только в том случае, если пользователь не вошел в систему.

Способ 2: использование pre_get_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() );
}

?>

Совет: при написании запросов вручную это обязательная ссылка.

Проверьте внешний интерфейс, и вы должны увидеть только сообщения, которые были опубликованы вами (пользователем, вошедшим в систему в данный момент).

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

Ваш адрес email не будет опубликован.

Copyright © 2021, GuruSite24. Копирование материалов сайта запрещено.
menu-circlecross-circle