Estoy configurando un tema secundario para algunos de los miembros de mi facultad, y como parte del tema, me gustaría activar un puñado de complementos en el momento en que se activa el tema. Entonces, naturalmente, usé la acción after_setup_theme y llamé a mi función de configuración. Funciona muy bien, excepto que se ejecuta en CADA solicitud (administrador y de otra manera). Lo probé agregando esto al final de la función de configuración:
echo '<script type="text/javascript">alert("This action was run")</script>';
Y como resultado, recibo una alerta de JavaScript en cada solicitud de administrador y en cada solicitud de front-end (tengo una configuración de red, así que obviamente en sitios donde este tema no está activo, no está ejecutando la función)
Entonces la pregunta es, ¿es esto un error? ¿De alguna manera estoy haciendo algo mal? Aquí está el código completo que estoy usando:
add_action( 'after_setup_theme', 'fwp_setup' );
function fwp_setup(){
// -- Unrelated code remove for the sake of brevity
require_once($_SERVER['DOCUMENT_ROOT'].'/wp-admin/includes/plugin.php');
activate_plugin('enable-media-replace/enable-media-replace.php');
activate_plugin('seo-image/seo-friendly-images.php');
activate_plugin('w3-total-cache/w3-total-cache.php');
echo '<script type="text/javascript">alert("This action was run")</script>';
}
Cualquier idea sería muy apreciada!
fuente
after_switch_theme
hace exactamente lo que pretendía aquí. Se activa después de que el tema se cambia a su tema. Una de las soluciones mencionadas a continuación utilizaswitch_theme
. Esto no tiene los resultados deseados, ya que solo ocurre al cambiar de tema. Haga referencia a este comentario de TracRespuestas:
SOLUCIÓN:
after_switch_theme
hace exactamente lo que pretendía aquí. Se activa después de que el tema se cambia a su tema. Una de las soluciones mencionadas a continuación utilizaswitch_theme
. Esto no tiene los resultados deseados, ya que solo ocurre al cambiar de tema.Aquí hay un artículo que encontré como referencia: http://core.trac.wordpress.org/ticket/7795#comment:29
Aquí está mi código modificado
fuente
La
after_setup_theme
acción está destinada a disparar en cada carga de WordPress. Es simplemente parte del proceso durante el cual WordPress invoca el sistema de plantillas, determina los diversos parámetros de configuración para el tema y luego continúa con el procesamiento posterior, como determinar la plantilla correcta para mostrar, etc.En otras palabras,
after_setup_theme
representa el punto en el que WordPress configura el tema actual, no el punto en el que el administrador activa y / o configura el tema actual.Lo que está buscando es un enlace de activación de tema , que actualmente no está disponible, pero está bajo consideración / desarrollo .
fuente
init !== activation
. Normalmente se llama__construct()
función en php también unainit
función. Eso significa: Inicializar la instancia.Desafortunadamente no hay un gancho de activación del tema. Sin embargo, esta pregunta proporciona una solución alternativa para eso.
Simplemente use el "enlace de activación del tema" para activar los complementos.
Una mejor solución, en la misma línea es esta . Ambos esencialmente usan el
switch_theme
gancho.Según los comentarios de OP y el ticket de trac vinculado ,
after_switch_theme
es el gancho requerido.Esto pasa el nombre del viejo tema como argumento. Sin embargo, si esto está en su
functions.php
(que debería ser ...) la devolución de llamada solo se activará cuando se active su tema .Del mismo modo, agregue una devolución de llamada a
switch_theme
solo se llamará cuando su tema esté desactivado.fuente
switch_theme
solo funcionó después de desactivar el tema. Sin embargo,after_switch_theme
funcionó perfectamente.Una mejor solución podría ser utilizar el script de activación del complemento de Thomas Griffin . Esto solicitará a los usuarios que instalen complementos de su elección cuando el tema esté en uso. Creo que esta es una excelente manera de separar el complemento del tema y aún así usarlo.
Dentro de su tema, verifique si el complemento está activo antes de usar sus funciones. Esto permitirá a los usuarios más opciones y control.
Puede configurar el script de activación fácilmente con Knapsack .
fuente
Su mejor solución ahora sería usar
switch_theme
hook y filtrar el argumento '$ theme' pasado para ver si es el actual, entonces si no devuelve;fuente