¿Se puede usar add_filter() dentro de otra función?
Soy nuevo en WordPress y actualmente estoy desarrollando mi primer plugin y tengo dificultades.
¿Cómo puedo insertar la acción add_filter dentro de mi función de envío? Quiero que la acción add_filter
se procese después de que el usuario haga clic en el botón de enviar.
He intentado esto pero no funcionó.
if(isset($_POST['btn_submit'])) {
function addContent($content = '') {
$content .= "Mi contenido";
return $content;
}
add_filter('the_content', 'addContent');
}
¡Cualquier ayuda sería muy apreciada. Gracias!

Creo que lo que REALMENTE estás buscando hacer es apply_filters()
. add_filter()
registra un nuevo filtro, mientras que apply_filters()
ejecuta los filtros que han sido registrados.
Si eso no es lo que estás buscando hacer, entonces debes ser consciente de que add_filter()
necesita ejecutarse cada vez que quieras que se aplique el filtro. Esto permite que los plugins se eliminen sin tener que anular el registro de todos sus filtros y, en general, mantiene una instalación de WordPress bastante limpia... también ayuda con la seguridad. Una mejor pregunta podría abarcar un alcance más amplio, donde indiques lo que estás intentando hacer, en lugar de que intentemos solucionar tu implementación del mismo.

Quiero agregar contenido al final de cada publicación de mi sitio, y add_filter lo hizo, pero la acción add_filter() solo se procesa cuando el plugin está activado, pero ¿qué pasa si quiero que se procese después de hacer clic en el botón de enviar? ¿Funcionará apply_filters()? Ya leí la documentación sobre apply_filters() y no encontré la solución a mi pregunta.

Solo quiero decir que ya resolví esto. Separé la función addContent de la función submit y puse una línea de código dentro de la función submit que llama a la función para agregar contenido.
algo como esto:
`function addContent($content = '') { $content .= "Mi contenido"; return $content; }
add_filter('the_content', 'addContent');
if(isset($_POST['btn_submit'])) { $content .= addContent(); }`
esto funciona para mí.. muchas gracias.

Si quieres que solo aparezca una vez que se ha hecho clic en un botón y luego desaparezca en el próximo cambio de página (una vez que los datos del post se han ido), entonces lo que estás haciendo es un método apropiado. Si deseas cambiar el comportamiento permanentemente cuando se hace clic en el botón, necesitarás almacenar la opción en la base de datos.

@Shaon, Gracias por tu respuesta. No pude hacer que eso funcionara efectivamente, pero aquí hay una función muy viable que encontré: http://core.trac.wordpress.org/ticket/15311#comment:13
