У меня каверзный вопрос. Надеюсь, это не станет нишей, которая не сможет помочь всем.
Я создал пользовательский поиск, который будет отображать результаты только из указанной категории. Если вы хотите сделать то же самое, выполните шаги 1 и 2.
- Создать форму для поиска:
Сохраните его как advanced.php в корне вашей темы / дочерней темы. У вас уже будет файл search.php в этом каталоге.
/ blog / - это путь к вашим сообщениям в блоге - если вы не получили результатов, отметьте это.
Значение cat_slug становится вашей категорией, в которой оно будет искать.
<form method="get" id="advanced-searchform" role="search" action="<?php echo esc_url( home_url( '/blog/' ) ); ?>">
<input type="hidden" name="search" value="post">
<input id="search-case-study" class="search-case-study" type="text" value="" placeholder="Search..." name="s" />
<input name="cat_slug" value="case-study" />
<input type="submit" id="searchsubmit" value="Search" />
</form>
Добавить к functions.php:
function advanced_search_query( $query ) {
// check if search AND if "cat_slug" input was present
if( $query->is_search() && ! empty( $_GET['cat_slug'] ) ) {
// find the category by the slug passed in the input
$term = get_category_by_slug( $_GET['cat_slug'] );
// defensive check, in case the category could not be found
if ( ! empty( $term->term_id ) ) {
// get the category ID
$cat_id = $term->term_id;
// set the query argument to search within the category
$query->set( 'cat', $cat_id );
}
}
}
add_action ('pre_get_posts', 'advanced_search_query');
Теперь результаты поиска сужены. Мне нужно настроить, какие элементы поста я вижу.
На данный момент я создал свои блоги, относящиеся к этому поиску, с помощью пользовательского шаблона, использующего ACF, как вы можете видеть в моей форме, в категории есть фрагмент «case-study». Нам не нужны все поля, которые я использовал. Поля, относящиеся к поиску:
повторитель - case_study_page_content
sub_fields - заголовок
sub_fields - автор
подполя - содержание
Я начал редактировать мой файл content.php, содержащийся в каталоге template-parts, чтобы отобразить результаты, это выглядит так:
<article <?php post_class(); ?> class="blog-post">
<a href="<?php the_permalink(); ?>" class="box-link"></a>
<?php $url = wp_get_attachment_url( get_post_thumbnail_id($post->ID), 'thumbnail' ); ?>
<img src="<?php echo $url ?>" />
<h2>
<?php the_title(); ?>
</h2>
<h3>
<?php the_field('author'); ?>
</h3>
<!--
<div>
<?php the_excerpt(); ?>
</div>
-->
</article>
Именно здесь я столкнулся со своим осложнением, так как не могу просто вызвать the_field ('author'); в цикл результатов.
Кто-нибудь еще мог успешно извлечь значения из ACF, используемые в пользовательском шаблоне страницы блога, на страницу результатов поиска?
Заранее большое спасибо, это немного превышает мой мозг, и любая помощь будет высоко оценена. Джейсон.