Вопрос или проблема
Я пытаюсь создать веб-страницу на WordPress, которая имеет текстовое поле для ввода и кнопку. Что я хочу сделать, так это взять текст из текстового поля и использовать его в качестве параметра для поиска в таблице, которую я добавил в базу данных сайта, и вывести результаты на экран. Я пытался использовать PHP, но безуспешно. Как лучше это сделать?
Вот код
Поиск в базе данных фильмов <input id="input" name="input" type="text" /> [php] global $wpdb; echo '<button type="button" onclick="myFunction()">Поиск</button>'; $text = sanitize_text_field($_POST['input']); echo $text; $wpdb->query('USE vcuw2938212664'); function myFunction(){ $txt = sanitize_text_field($_POST['input']); echo 'текст - "$txt; $query = 'SELECT * FROM documentaries WHERE English_Title = \'%Li%\';'; echo $query; $results = $wpdb->get_results($query); if ($results != Null){ echo "{$results}"; } else { echo 'результатов нет'; } } [/php]
Вы можете использовать WP_Query();
для запроса результатов.
У него есть аргумент 's' => $search_query
,
Создайте ввод, получите значение ввода, сохраните его в $search_query
, затем создайте запрос,
$query = new WP_Query( array( 'post_type' => 'post', 's' => $search_query ) );
if ( $query->have_posts() ) :
while ( $query->have_posts() ) : $query->the_post();
// сделайте что-нибудь...
endwhile;
wp_reset_postdata();
endif;
Ответ или решение
Создание страницы поиска с помощью SQL-запросов на платформе WordPress может быть непростой задачей, особенно если вы только начинаете разбираться в PHP и взаимодействии с базой данных. В вашем случае вы хотите реализовать функциональность поиска по таблице базы данных и вывести результаты на экран. Давайте рассмотрим, как можно это сделать эффективно и безопасно.
1. Основы PHP и WordPress
Для начала, важно знать, что WordPress предлагает встроенные функции для работы с базой данных через объект $wpdb
. Это помогает избежать SQL-инъекций и упрощает синтаксис работы с базой данных.
2. Создание формы поиска
Вам потребуется создать HTML-форму, которая позволит пользователю вводить текст для поиска:
<form method="post">
<label for="input">Поиск по фильму:</label>
<input id="input" name="input" type="text" />
<button type="submit">Поиск</button>
</form>
3. Обработка данных ввода
После того, как пользователь введет запрос и нажмет кнопку, данные будут отправлены с помощью метода POST. Вы можете обработать ввод следующим образом:
<?php
global $wpdb;
if ($_SERVER["REQUEST_METHOD"] == "POST" && !empty($_POST['input'])) {
// Сначала очищаем ввод пользователя для безопасности
$text = sanitize_text_field($_POST['input']);
// Создаем SQL-запрос, используя подвязку
$query = $wpdb->prepare("SELECT * FROM documentaries WHERE English_Title LIKE %s", '%' . $wpdb->esc_like($text) . '%');
// Выполняем запрос
$results = $wpdb->get_results($query);
// Проверяем и выводим результаты
if ($results) {
foreach ($results as $result) {
echo "<div>{$result->English_Title}</div>";
}
} else {
echo 'Результатов не найдено.';
}
}
?>
4. Запросы с помощью WP_Query
Альтернативный подход для работы с записями в WordPress — это использование класса WP_Query
. Однако данный класс больше используется для работы с постами и страницами. Если вы нацелены на конкретные таблицы, проще использовать $wpdb
.
5. SEO-оптимизация
Для оптимизации вашего контента на странице поиска следуйте нескольким рекомендациям:
- Используйте метатеги для описания страницы.
- Разработайте URL-адреса, которые содержат ключевые слова, например
yourwebsite.com/search?query=yoursearchterm
. - Добавьте заголовки и подзаголовки на странице с целью улучшения индексации.
Заключение
Создание страницы поиска с использованием PHP и SQL в WordPress — это мощный инструмент для получения данных из базы. Использование функции sanitize_text_field()
для защиты от XSS атак и $wpdb->prepare()
для предотвращения SQL-инъекций делает вашу реализацию более надежной. Надеюсь, предложенные шаги помогут вам создать нужную функциональность и улучшить взаимодействие пользователей с вашим сайтом.