Вопрос или проблема
У меня есть система форума, где я создал пользовательский тип записи, и я хотел бы иметь систему поиска по темам, но я не знаю, какой должна быть структура, например, как будет выглядеть файл и действие формы поиска.
Я нашел ответ здесь, но его рассматривают так, как будто я хотел пользовательский тип записи для темы, а в моем случае я создал его как плагин, кто-нибудь мог бы подсказать, как я могу создать поиск в рамках пользовательского типа записи, но который находится внутри плагина?
Как создать пользовательский поиск для пользовательского типа записи?
Вам следует попробовать это в вашем поиске
global $query_string;
wp_parse_str($query_string, $search_query);
//добавить тип записи.
$post_type = array('post_type'=>'your-custom-post-type');
$combine_search = array_merge($search_query,$post_type);
$search = new WP_Query($combine_search);
.
Ответ или решение
Для создания страницы результатов поиска для индивидуального типа записей в плагине WordPress, который вы разработали для форума, существует несколько ключевых этапов. Мы будем использовать стандартный функционал WordPress организовать поиск, но с некоторыми доработками для работы с пользовательским типом записей.
Шаг 1: Создание поисковой формы
Первым делом необходимо создать форму для осуществления поиска. данную форму можно разместить в любом месте вашего плагина, например, в административном интерфейсе или на стороне фронтенда.
<form role="search" method="get" id="searchform" action="<?php echo esc_url(home_url('/')); ?>">
<div>
<label class="screen-reader-text" for="s"><?php _e('Search:', 'textdomain'); ?></label>
<input type="text" value="<?php echo get_search_query(); ?>" name="s" id="s" placeholder="<?php esc_attr_e('Поиск тем...', 'textdomain'); ?>" />
<input type="hidden" name="post_type" value="your-custom-post-type" />
<input type="submit" id="searchsubmit" value="<?php esc_attr_e('Искать', 'textdomain'); ?>" />
</div>
</form>
В этом случае мы используем стандартный URL для поиска, добавляя параметр post_type
, чтобы указать, что вы хотите искать только в вашем индивидуальном типе записей.
Шаг 2: Обработка поискового запроса
Затем необходимо обработать запрос, чтобы учитывать ваш кастомный тип записи. Мы можем использовать pre_get_posts
хук, чтобы изменить объект запроса перед выполнением.
add_action('pre_get_posts', 'custom_search_query');
function custom_search_query($query) {
// Проверка, что это основной запрос и есть параметр поискового запроса
if ($query->is_search && !is_admin()) {
$query->set('post_type', 'your-custom-post-type');
}
return $query;
}
Этот код позволяет убедиться, что при выполнении поиска будут учитываться только записи вашего индивидуального типа.
Шаг 3: Отображение результатов поиска
Создайте шаблон для отображения результатов поискового запроса, например, search.php
в вашем плагине или теме. Например:
<?php get_header(); ?>
<div id="content">
<h1><?php printf(__('Результаты поиска для: %s', 'textdomain'), get_search_query()); ?></h1>
<?php if (have_posts()) : ?>
<ul>
<?php while (have_posts()) : the_post(); ?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endwhile; ?>
</ul>
<?php else : ?>
<p><?php _e('Извините, ничего не найдено.', 'textdomain'); ?></p>
<?php endif; ?>
</div>
<?php get_footer(); ?>
Шаг 4: SEO-оптимизация
Чтобы повысить вашу SEO-оптимизацию:
- Убедитесь, что заголовки ваших страниц содержат ключевые слова, связанные с вопросами на вашем форуме.
- Используйте мета-теги и описания, соответствующие содержимому.
- Убедитесь, что ссылки на отдельные топики хорошо структурированы и содержат ключевые слова.
Заключение
С помощью вышеописанных шагов вы сможете создать эффективную поисковую систему для вашего индивидуального типа записей в плагине WordPress. Обязательно тестируйте функциональность на разных устройствах и браузерах, чтобы убедиться, что ваш поиск работает корректно. Удачи в разработке!