¿Qué está mal en mi uso de add_filter?

17 abr 2011, 10:50:33
Vistas: 327
Votos: 0

Quería reemplazar la búsqueda por defecto de WordPress con mi búsqueda personalizada, pero cuando pongo el siguiente código en el archivo del plugin no reemplaza el buscador predeterminado (sin errores, nada) y cuando pongo el código en functions.php funciona correctamente y reemplaza el buscador predeterminado.

¿Alguien puede decirme por qué no funciona en el archivo del plugin? ¡Gracias!

function DynamiteSearch($form) {
    $form = '<form method="get" id="searchform" action="' . get_option('home') . '/" >
    <div><label class="hidden" for="s">' . __('Buscar:') . '</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(__('Buscar')).'" />
    </div>
    </form>';
    return $form;
}

add_filter('get_search_form', 'DynamiteSearch');
2
Comentarios

¿Estás seguro de que el plugin está activado? Si lo está, sería útil si pudieras publicar el archivo completo del plugin.

scribu scribu
17 abr 2011 11:15:42

Mi plugin solo tiene esta cantidad de código con la cabecera normal del plugin. Puedo activar el plugin normalmente, no hay problema con eso.

insightful insightful
18 abr 2011 14:24:43
Todas las respuestas a la pregunta 2
3

Limpié tu código y agregué toda la información del encabezado para instalarlo. ¡Tu plugin funciona bien, lo probé!

/*
Autor: quien sea
Nombre del Plugin: Algún Nombre
URI del Plugin: 
Dominio de Texto: algún-dominio
Versión: 1.0
*/

function DynamiteSearch($form) 
{
    $form = "<form method = 'get' id = 'searchform' action = ' ".site_url()." ' >";
    $form .= "<div><label class = 'hidden' for='s'>". __("Buscar: ") . "</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(__('Buscar'))." ' />";
    $form .= "</div>";
    $form .= "</form>";

    return $form;
}

add_filter('get_search_form', 'DynamiteSearch');

Intenta cambiar el texto del botón de enviar para ver si funciona. Avísame si te funcionó.

Gracias, Rutwick

17 abr 2011 19:11:21
Comentarios

¡Gracias Rutwick! Pero por alguna razón el cuadro de búsqueda en mi sitio aún no cambia. ¿Lograste cambiar el cuadro de búsqueda con este código? Gracias por hacérmelo saber.

insightful insightful
18 abr 2011 14:21:32

Sí Arvind... Lo probé cambiando el texto del botón y se mostró correctamente. Estoy usando el tema 'TwentyTen'...

Rutwick Gangurde Rutwick Gangurde
18 abr 2011 18:38:33

¿Estás usando un Plugin de caché, o un CDN, o cualquier otra forma de almacenamiento en caché que pueda estar evitando que veas los cambios realizados?

Chip Bennett Chip Bennett
16 jun 2011 20:06:25
0

Si el código que has publicado es literalmente todo el código que estás colocando en el archivo, esa será la razón.

En primer lugar, necesitas encabezados de plugin en la parte superior del archivo, por ejemplo:

/*
    Author: quien sea
    Description: lo que sea  
    Domain Path: /lang
    Plugin Name: Algún Nombre
    Plugin URI: 
    Text Domain: algun-dominio
    Version: 1.0
*/

En segundo lugar, necesitas activar el plugin desde la página de administración de plugins (Admin > Plugins), pero solo aparecerá en esa lista una vez que el plugin tenga un encabezado válido, como el publicado arriba.

Si ninguno de esos dos puntos es el problema, por favor publica más de tu código (debe haber más, porque faltan los encabezados del plugin en lo publicado).

Espero que ayude.. :)

17 abr 2011 12:12:33