Что не так с моим использованием add_filter

17 апр. 2011 г., 10:50:33
Просмотры: 327
Голосов: 0

Я хотел заменить стандартный поиск 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');
2
Комментарии

Вы уверены, что плагин активирован? Если да, было бы полезно, если бы вы опубликовали весь файл плагина.

scribu scribu
17 апр. 2011 г. 11:15:42

Мой плагин содержит только этот код с обычным заголовком плагина. Я могу активировать плагин как обычно, с этим нет проблем.

insightful insightful
18 апр. 2011 г. 14:24:43
Все ответы на вопрос 2
3

Я привел ваш код в порядок и добавил всю необходимую информацию в заголовок для установки. Ваш плагин работает отлично, я его протестировал!

/*
Автор: кто-то
Название плагина: Какое-то имя
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');

Попробуйте изменить текст кнопки отправки, чтобы проверить, работает ли это. Дайте мне знать, получилось ли у вас.

Спасибо, Рутвик

17 апр. 2011 г. 19:11:21
Комментарии

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

insightful insightful
18 апр. 2011 г. 14:21:32

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

Rutwick Gangurde Rutwick Gangurde
18 апр. 2011 г. 18:38:33

Ты используешь кэширующий плагин, CDN или любую другую форму кэширования, которая может мешать тебе видеть измененный вывод?

Chip Bennett Chip Bennett
16 июн. 2011 г. 20:06:25
0

Если код, который вы опубликовали, буквально является всем кодом, который вы помещаете в файл, то именно поэтому он не работает.

Во-первых, вам нужны заголовки плагина в начале файла, например:

/*
    Автор: кто-то
    Описание: что-то
    Domain Path: /lang
    Plugin Name: Какое-то название
    Plugin URI: 
    Text Domain: какой-то-домен
    Version: 1.0
*/

Во-вторых, вам нужно активировать плагин на странице плагинов в админке (Администрирование > Плагины), но он появится в этом списке только после того, как у плагина будет правильный заголовок, подобный приведённому выше.

Если ни одна из этих двух проблем не относится к вашему случаю, пожалуйста, опубликуйте больше вашего кода (должно быть больше, так как в опубликованном коде отсутствуют заголовки плагина)..

Надеюсь, это поможет.. :)

17 апр. 2011 г. 12:12:33