Что не так с моим использованием add_filter
Я хотел заменить стандартный поиск WordPress на свою кастомную версию, однако когда я помещаю следующий код в файл плагина, он не заменяет стандартное поле поиска (без ошибок, ничего не происходит), а когда я помещаю этот код в functions.php, всё работает корректно и заменяет стандартное поле поиска.
Может кто-нибудь объяснить, почему это не работает в файле плагина? Спасибо!
function DynamiteSearch($form) {
$form = '<form method="get" id="searchform" action="' . get_option('home') . '/" >
<div><label class="hidden" for="s">' . __('Искать:') . '</label>
<input type="text" value="' . attribute_escape(apply_filters('the_search_query', get_search_query())) . '" name="s" id="s" />
<input type="submit" id="searchsubmit" value="'.attribute_escape(__('Поиск')).'" />
</div>
</form>';
return $form;
}
add_filter('get_search_form', 'DynamiteSearch');

Я привел ваш код в порядок и добавил всю необходимую информацию в заголовок для установки. Ваш плагин работает отлично, я его протестировал!
/*
Автор: кто-то
Название плагина: Какое-то имя
URI плагина:
Текстовая область: some-domain
Версия: 1.0
*/
function DynamiteSearch($form)
{
$form = "<form method = 'get' id = 'searchform' action = ' ".site_url()." ' >";
$form .= "<div><label class = 'hidden' for='s'>". __("Поиск: ") . "</label>";
$form .= "<input type = 'text' value=' ". attribute_escape(apply_filters('the_search_query', get_search_query())) ." ' name='s' id='s' />";
$form .= "<input type = 'submit' id='searchsubmit' value=' ".attribute_escape(__('Найти'))." ' />";
$form .= "</div>";
$form .= "</form>";
return $form;
}
add_filter('get_search_form', 'DynamiteSearch');
Попробуйте изменить текст кнопки отправки, чтобы проверить, работает ли это. Дайте мне знать, получилось ли у вас.
Спасибо, Рутвик

Спасибо, Ратвик! Но по какой-то причине поисковая строка на моем сайте все еще не меняется. У тебя получилось изменить поисковую строку с этим кодом? Спасибо, что дал мне знать.

Да, Арвинд... Я проверил, изменив текст кнопки, и он отобразился корректно. Я использую тему 'TwentyTen'...

Если код, который вы опубликовали, буквально является всем кодом, который вы помещаете в файл, то именно поэтому он не работает.
Во-первых, вам нужны заголовки плагина в начале файла, например:
/*
Автор: кто-то
Описание: что-то
Domain Path: /lang
Plugin Name: Какое-то название
Plugin URI:
Text Domain: какой-то-домен
Version: 1.0
*/
Во-вторых, вам нужно активировать плагин на странице плагинов в админке (Администрирование > Плагины), но он появится в этом списке только после того, как у плагина будет правильный заголовок, подобный приведённому выше.
Если ни одна из этих двух проблем не относится к вашему случаю, пожалуйста, опубликуйте больше вашего кода (должно быть больше, так как в опубликованном коде отсутствуют заголовки плагина)..
Надеюсь, это поможет.. :)
