add_action wp_head no funciona
Estoy tratando de agregar código al head (específicamente un bloque de script de seguimiento) a través de un plugin que estoy creando.
El plugin tiene una interfaz donde el usuario ingresa algunos detalles que luego se agregan a la tabla de opciones. Todo esto está funcionando perfectamente hasta ahora. Pero luego quiero escribir una declaración condicional si hay una opción entonces agregar al head. Básicamente tengo todo esto en el archivo principal del plugin y se ve así:
if(get_option( 'MyOptionName' )){
function testingone(){ ?>
<script>var Script = VaAquí; </script>
<?php ;}
add_action('wp_head','testingone');
}
He intentado colocar esto dentro del bloque que extrae los datos y luego los agrega a las opciones, pero no funcionó, luego decidí hacerlo de esta manera, donde busca si hay una opción en la tabla, pero esto tampoco inyecta nada en el head. En algunos lugares he visto que la gente coloca el add_action arriba de la función, pero en el codex muestra un ejemplo donde está debajo. De cualquier manera lo he intentado y he fallado.
¿Alguien puede ver dónde está el error?
Gracias

Saca el add_action()
fuera de la función y coloca el condicional dentro del callback. Además, si estás imprimiendo un script directamente, usa wp_print_scripts
en lugar de wp_head
. También tienes un error de sintaxis.
function testingone(){
if( get_option( 'MyOptionName' ) ) {
?>
<script>var Script = GoesHere; </script>
<?php
}
}
add_action( 'wp_print_scripts','testingone' );

Intenta modificar tu código de la siguiente manera:
function testingone() {
if( FALSE !== get_option( 'MyOptionName' ) ) {
echo( 'ok, esto está en el head!' );
}
}
add_action( 'wp_head', 'testingone' );
Además, verifica en los archivos de tu tema (probablemente en header.php
) para asegurarte de que la función wp_head()
esté siendo llamada, y confirma que la opción MyOptionName
esté configurada para el sitio.
Edición adicional -- También deberías usar wp_enqueue_script()
para agregar Javascript a tu sitio, en lugar de simplemente colocarlo directamente en el <head>
.
Referencias

function plugin_script() {
wp_enqueue_script( 'Jquery-min', WP_PLUGIN_URL. '/Test Plugin/jquery-min.js', false, '1.11.0' );<br/>
wp_enqueue_style('pluginstyle', WP_PLUGIN_URL. '/Test Plugin/pluginstyle.css',false,'1.0',"all");<br/>
}
add_action( 'wp_head', 'plugin_script' );
El hook de acción "wp_head" se dispara dentro de la sección "head" del documento.
wp_enqueue_script() se utiliza para ejecutar scripts y wp_enqueue_style es para hojas de estilo desde el Plugin. "WP_PLUGIN_URL." obtendrá los datos desde la carpeta de plugins de los temas. "Test plugin" es el nombre de tu plugin. "pluginstyle.css" es la hoja de estilos del plugin. "jquery-min.js" es el script del plugin.

Por favor explica cómo responde, simplemente soltar código no es una buena respuesta

No es código tirado así nomás, ya lo he usado en mi plugin. ¿Cuál es tu duda? Pregúntame y aclararé ese código.

No lo probé, estaba sugiriendo que escribieras alguna explicación adicional al código publicado sobre cómo responde a la pregunta original.
