Я считаю, что это то, что Для этого необходимо создать собственный фильтр для 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' ) ) {
Код: Выделить всё
$( '#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;
},
Спасибо за любую помощь.
ОБНОВЛЕНИЕ:
Мне удалось заставить 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
Код: Выделить всё
$query = new WP_Query( array( 'queryByTitle' => 'hmi' ) );
/wp-json/wp/v2/posts/?filter[meta_key]=queryByTitle&filter[meta_value]=words_to_find
Но это не работает. Есть идеи, как REST API может принять пользовательский аргумент?
Подробнее здесь: https://stackoverflow.com/questions/541 ... earch-term