Tuve un problema similar y después de mirar a través de Adam Brown list of all WordPress filter hooks, encontré que el gancho que necesitaba existe (widget_title
, como se menciona en pxl), pero que no hay ningún gancho para obtener toda la salida del widget. Pensé en elaborar la solución que funcionó para mí.
Teóricamente, el gancho widget_title
debería afectar a todos los widgets en su blog, pero estoy seguro de que algunos widgets de terceros no incluyen la línea de código necesaria para aplicar filtros de título, por lo que no es infalible. Sin embargo, funcionó para mí y se puede usar para aplicar un 'shortcode' personalizado (más exactamente, en este caso, 'longcode') o sintaxis para los títulos de tus widgets. Por ejemplo, quería ocasionalmente incluir código html en mis títulos de widgets, pero de manera predeterminada, todo html es eliminado. Por lo tanto, con el fin de ser capaz de añadir cosas como <em>
etiquetas de texto en algunos de mis títulos, he elegido una sintaxis personalizado: [[
en lugar de <
& ]]
en lugar de >
(por ej, [[em]]
y [[/em]]
) y luego creé una función en las funciones de mi tema.archivo PHP para procesar esa sintaxis personalizada y reemplazarlo con el HTML equivalente:
function parse_html_widget_title($text) {
return str_replace(array('[[', ']]'), array('<', '>'), $text);
}
Luego he añadido una línea debajo de él para añadir la función como filtro:
add_filter('widget_title', 'parse_html_widget_title', 11); // 11 is one above the default priority of 10, meaning it will occur after any other default widget_title filters
La funcionalidad add_filter
/apply_filter
automáticamente pasa el contenido que se filtra como el primer parámetro a la función especificada como filtro, así que eso es todo lo que necesita hacer.
Para hacer algo similar para la salida principal del widget, necesitará mirar todos sus widgets para ver qué gancho usan y verificar que tienen un filtro para su salida principal, que usar add_filter()
para cada uno enlace que encuentre con su función de devolución de llamada personalizada (por ejemplo, es widget_text
para la salida del widget de texto, o get_search_form
para el formulario de búsqueda [puede verlo en wp-includes/general-template.php, en la función get_search_form()
]). El problema es que algunos de los widgets generados dinámicamente no tienen ganchos (como el widget Meta), razón por la cual la solución de búfer de salida que proporciona Jeff es la solución más versátil, aunque no la ideal.
no estoy seguro de cuando se presentó el filtro widget_text, tal vez no lo tenían en ' 09 cuando esta pregunta fue originalmente hecha. Vea mi código de ejemplo a continuación en mi respuesta para obtener un ejemplo de trabajo completo (y muy simple). –