Как отфильтровать WordPress Rest API по статьям, содержащим поисковый запрос в заголовке?Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как отфильтровать WordPress Rest API по статьям, содержащим поисковый запрос в заголовке?

Сообщение Anonymous »

Наша установка WordPress использует REST API из серверной части для поиска статей. В настоящее время запрос, похоже, возвращает любые статьи, содержащие любые слова в любых полях. Мы пытаемся изменить это, чтобы оно возвращало только статьи, содержащие поисковый запрос в заголовке. Например, если поисковый запрос «это заголовок», то будут возвращены только статьи, содержащие именно эту фразу в заголовке.

Я считаю, что это то, что Для этого необходимо создать собственный фильтр для WP_Query, установить плагин WP Rest Filter, чтобы разрешить фильтрацию через REST, и добавить пользовательский фильтр в запрос. Но я не уверен, как это реализовать.

Я вижу в этом сообщении https://wordpress.stackexchange.com/que ... -to-filter -my-search-in-post-if-contains-a-word-in-title-content-or-excerpt/286083#286083 как можно добавить фильтр WP_Query. Чего я не получаю из опубликованного там решения (в разделе, начинающемся со слов «Ну, тем временем я нашел решение»), так это того, где предоставляется «search_prod_title». Это проверено в этой строке ниже, но я не Не вижу, где это было установлено.

Код: Выделить всё

    if ( $search_term = $wp_query->get( 'search_prod_title' ) ) {
Другая часть, которую я не понимаю, — это как выбрать собственный фильтр при вызове REST API. Вот где мы сейчас вызываем REST API:

Код: Выделить всё

    $( '#article-assign' ).select2( {
minimumInputLength: 3,
ajax: {
delay: 300,
url: window.CFEwpApiSettings.root + 'wp/v2/posts',
data: function( params ) {
let query = {
_embed: true,
search: params.term
};

if ( articleIds.join( ',' ) !== '' ) {
query.exclude = articleIds.join( ',' );
}

return query;
},
Кто-нибудь знает, как мне изменить URL-адрес для вызова REST (или запроса, если он там находится), чтобы использовать пользовательский фильтр?

Спасибо за любую помощь.

ОБНОВЛЕНИЕ:
Мне удалось заставить wp_query правильно работать с это:

Код: Выделить всё

    add_filter( 'posts_where', function ( $where, \WP_Query $q )
{
global $wpdb;
$query_by_title = $q->get( 'queryByTitle' );
if ( $query_by_title = $q->get( 'queryByTitle' ) ) {
$where .= ' AND ' . $wpdb->posts . '.post_title LIKE \'' . esc_sql( $wpdb->esc_like( $query_by_title ) ) . '%\'';
}
return $where;

}, 10, 2 ); // Note the priority 10 and number of input arguments is 2
Это прекрасно работает, когда я вызываю его из PHP следующим образом:

Код: Выделить всё

    $query = new WP_Query( array( 'queryByTitle' => 'hmi' ) );
Теперь я пытаюсь понять, как передать этот аргумент в PHP из JavaScript. Я использую плагин WP Rest Filter, чтобы разрешить фильтрацию, но не знаю, как указать новый аргумент queryByTitle. Я пробовал такие вещи, как:

/wp-json/wp/v2/posts/?filter[meta_key]=queryByTitle&filter[meta_value]=words_to_find

Но это не работает. Есть идеи, как REST API может принять пользовательский аргумент?

Подробнее здесь: https://stackoverflow.com/questions/541 ... earch-term
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как пройти аутентификацию для FCM Rest API с помощью Google REST API в PHP REST API?
    Anonymous » » в форуме Php
    0 Ответы
    164 Просмотры
    Последнее сообщение Anonymous
  • Wordpress изменить поисковый запрос
    Anonymous » » в форуме Php
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Строка, определенная в заголовке A, не определена в заголовке B [закрыто]
    Anonymous » » в форуме C++
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Учитывая строку, проверьте, соответствует ли поисковый запрос началу какой-либо подстроки.
    Гость » » в форуме JAVA
    0 Ответы
    61 Просмотры
    Последнее сообщение Гость
  • Очистите поисковый запрос и перезагрузите все элементы ввода Select2 после выбора любого элемента.
    Гость » » в форуме Jquery
    0 Ответы
    96 Просмотры
    Последнее сообщение Гость

Вернуться в «Php»