Intereting Posts
Программирование WordPress для отправки настраиваемой формы на указанный адрес электронной почты как удалить метатет из категории wordpress archive и изменить его отображение Программно добавьте меню навигации и пункты меню Получить ссылку меню администратора Пользовательский wp_editor не обновляет post_content Существуют ли сценарии, в которых могут использоваться query_posts? Отправить контактную форму на конкретный адрес-адрес электронной почты adres Изменить внешний вид на основе категории, но сообщение находится в двух основных категориях Изображения прикреплены к сообщениям из ссылки библиотеки на страницу ошибок 404 WordPress Media Library показывает неправильный размер предварительного просмотра? Загрузка файла PDF и предоставление ссылок на скачивание post_password_required () не распознает набор файлов cookie с правильным паролем ограничено месяцами, а не количеством должностей add_post_meta | update_post_meta | Через интерфейс Почему форма не нуждается в «действии» с плагином, который использует данные сообщения?

Показать популярный пост на другом сайте php через WP REST JSON API

Мне нужно показать популярные и последние сообщения на другом веб-сайте PHP в том же домене.

Пример:

  1. www.example.com -> основной сайт (php, mysql)
  2. www.example.com/blog -> Блог WordPress

Необходимо показать популярные, последние сообщения блога на главном веб-сайте.

Обратите внимание, что блог и основной сайт используют две отдельные базы данных.

Я решил использовать плагин WP REST JSON API для этого. Теперь у меня другой вопрос.

Я использую следующий код для получения популярного сообщения на прошлой неделе. Мне действительно нужно получить эти же данные через вызов API.

 $args = array( 'date_query' => array( array( 'after' => '1 week ago' ) ), 'posts_per_page' => $recent_posts_count, 'ignore_sticky_posts' => 1, 'meta_key' => 'post_views_count', 'orderby' => 'meta_value_num', 'order' => 'DESC' ); $popularposts = new WP_Query( $args ); 

Как я могу это сделать?

Solutions Collecting From Web of "Показать популярный пост на другом сайте php через WP REST JSON API"

Я дам вам небольшой ответ на ваше обновление, сделав это с помощью WP API . API имеет возможность использовать WP_Query, как и в ядре, но о параметрах get в URL-адресе.

URL-адрес для вывода контента из состояния публикации будет выглядеть так:

 http://example.com/wp-json/posts 

Чтобы вытащить контент с параметрами WP_Query, к которым вы привыкли, вы можете сделать это следующим образом:

 http://example.com/wp-json/posts?filter[posts_per_page]=2&filter[order]=ASC 

Вы можете создать свой собственный запрос со всеми параметрами также в URL-адресе. Вы можете видеть, как метод захвата этих данных знаком с использованием WP_Query для стандартного цикла WordPress. Если вы не укажете параметр, будут использоваться значения по умолчанию WP_Query .

Результатом является json, что вы можете анализировать и использовать для вас внешний сайт.

См. Также сайт API для получения дополнительных параметров и документации.

Обновление для date_query

API не может создать результат для запроса типа query_date . См. Документацию по всем возможным параметрам.

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

 // Allow datequery in /posts filter add_filter( "json_query_vars", function( $query_args ) { return array_merge( $query_args, array( "date_query" => array( array( "after" => "1 week ago" ) ) ) ); } ); 

Обновление для meta_query

API также не может использовать эту функцию WP-Query по умолчанию. Но вы можете использовать hook для улучшения API для этого требования. Также здесь небольшой пример.

 add_filter('json_query_var-meta_query', 'add_meta_query', 10, 1); function add_meta_query( $data ){ $args = array(); $args['relation'] = 'AND'; foreach ( $data as $key => $value ) { if ( 'relation' === $key ) { $args['relation'] = $data['relation']; } if ( substr($key, 0, 3) === 'key' ) { $arg_num = substr( $key, 3 ); $args[ (int) $arg_num ][ 'key' ] = $value; } if ( substr( $key, 0, 7 ) === 'compare' ) { $arg_num_comp = substr( $key, 7 ); $args[ (int) $arg_num_comp ][ 'compare' ] = $value; } } return $args; } 

Теперь я могу назвать JSON таким же спокойным, чтобы имитировать фильтр сообщений Wp_query уже на сервере:

 ?filter[meta_query][key]=_newsml_categories_newsstream&filter[meta_query][key2]=homepage&filter[meta_query][relation]=AND&filter[meta_query][compare]=NOT%20EXISTS&filter[meta_query][compare2]=NOT%20EXISTS 

Обновление мета-запроса на основе этого ответа .