Wordpress, add_filter, get_search_form - PullRequest
       14

Wordpress, add_filter, get_search_form

1 голос
/ 24 февраля 2012

Я пытаюсь заменить форму поиска своей собственной.

Пример плагина:

<?php
/*
Author: whatever
Plugin Name: Some Name
Plugin URI: 
Text Domain: some-domain
Version: 1.0
*/

function custom_search($form)
{
$form = "testing<form method = 'get' id = 'searchform' action = ' ".site_url()." ' >";
$form .= "<div><label class = 'hidden' for='s'>". __("Search for: ") . "</label>";
$form .= "<input type = 'text' value=' ". esc_attr(apply_filters('the_search_query', get_search_query())) ." ' name='s' id='s' />";
$form .= "<input type = 'submit' id='searchsubmit' value=' ".esc_attr(__('Look for it'))." ' />";
$form .= "</div>";
$form .= "</form>";

return $form;
}

add_filter('get_search_form', 'custom_search');

Результат, не работает.

Я использую последнюю версию Wordpress с темой twentyeleven.

Что мне здесь не хватает?!?

РЕДАКТИРОВАТЬ: Похоже, что если тема имеет файл searchform.php, этофильтр будет переопределен этим файлом.Так что в основном фильтр работает, только если тема не имеет searchform.php.Теперь это просто глупо ..

1 Ответ

1 голос
/ 05 октября 2012

Это результат известной ошибки WordPress в функции get_search_form( $echo ), которая игнорирует аргумент $ echo и всегда выдает эхо, если в вашей теме есть файл шаблона searchform.php.

Это дерьмофункция, с 2-летним билетом trac .Пока они не исправят это, есть несколько обходных путей: 1. Используйте file_get_contents() - но не будете анализировать PHP 2. Используйте пользовательскую функцию с хуком get_searchform (не фактической функцией) 3. Или используйте простую буферизацию вывода для захвата выводав качестве переменной;

На этой странице приведены примеры для всех 3 методов

...