[РЕШЕНО] Поиск с фильтром «ТОЛЬКО ИЗБРАННОЕ»
пользуюсь плагином "wp favorite post"
Плагин создает в базе данных для каждого пользователь новую таблицу wpfp_favorites с ID избранных постов. На отдельной странице создается\отображается список этих постов.
Вопрос: как сделать форму поиска с фильтром поиска по избранному пользователя (искать только среди избранного)?
Буду благодарен любым советам, так как тема для меня сырая, даже не предстовляю как делать, единсnвенное знаю что как обычно фильтрация будет влиять на значения в URL b всего (так видел на других сайтах "&filter=search_fav" )
решение в pre_get_posts и post__in
function search_exact_match($query) { if ($query->is_search && isset( $_GET['in-fav'] ) ) { $query->set( 'post__in', array(63798,17137,101565) ); } } add_action('pre_get_posts', 'search_exact_match' );
проблема в конфликтах плагинов - если не работает ищите кто влияет на поиск - у меня конфликт "relevanssi" и "simply exclude"
нашел как получить данные (ID) из таблицы в плагине , как это прикрутить к форме поиска
$limit=10; global $wpdb; $query = "SELECT post_id, meta_value, post_status FROM $wpdb->postmeta"; $query .= " LEFT JOIN $wpdb->posts ON post_id=$wpdb->posts.ID"; $query .= " WHERE post_status='publish' AND meta_key='wpfp_favorites' AND meta_value > 0 ORDER BY ROUND(meta_value) DESC LIMIT 0, $limit"; $results = $wpdb->get_results($query); // массив ID $results_id_array = wp_list_pluck( $results, 'post_id' ); // теперь создаю запрос new WP_Query() - с выборкой среди ID $the_query = new WP_Query( array( 'post_type' => 'any', 'post__in' => $results_id_array ) ); // ЗАМЕТКА Вывести поиск //Change your search query here to include the FAQ post type $query_args = [ 'post_type' => ['post'], 's' => strip_tags($_GET['s']), 'post_status' => 'publish', 'paged' => $paged 'post__in' => array( 2, 5, 12, 14, 20 ) ) ]; $post_query = new WP_Query($query_args); if($post_query->have_posts()) { }
Подскажите как дальше быть и в правильном ли направлении и как прикрутить к форме поиска
<form role="search" method="get" action="<?php echo $_SERVER['REQUEST_URI']; ?>"> <input type="hidden" name="action" value="fav_search"> <input type="text" name="search-career" value="ИЩЕМ"> <input type="submit" class="form-submit" value="Submit"> </form> <?php if( isset( $_GET['fav_search'] ) ) { } ?>
или к любой другой , я даже понятия не имею что куда вставлять
Попробуй параметр
s
для get_posts() или WP_Query и там же укажи параметр include (posts__in) в который передай ID фаворитных постов текущего пользователя, которые как я понял сохраняются в метаполе wpfp_favorites.Над кодом уже сам посиди, в принципе примеры есть в описании к функциям: get_posts(), WP_Query.
Те ты предлагаешь кому то за тебя код написать? )
Закажи у кого нибудь на том же кворке за 500р и попроси что бы тебе подписали код комментариями.
Если хочешь сам, то вот тебе рекомендации:
Но будь аккуратнее, тк если не будешь фильтровать данные их этой формы то сайт смогут поломать.
про кворк - отличная идея - позже наверно так и сделаю - тем более что доступ к сайту не нужен - все можно на тестовом. Чето сразу не додумался