add_action wp_head no funciona

18 oct 2013, 19:55:58
Vistas: 21K
Votos: 3

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

2
Comentarios

¿Has intentado usar echo o print_r para ver qué valor está devolviendo? Tal vez sea algo tan simple como un error tipográfico en el nombre de tu opción comparado con la entrada en wp_options

Eric Holmes Eric Holmes
18 oct 2013 20:05:14

Cambia if(get_option( 'MyOptionName' )){ por if ( true ) {. Si el código se ejecuta, entonces sabrás que get_option( 'MyOptionName' ) está devolviendo false.

Charles Clarkson Charles Clarkson
18 oct 2013 20:06:07
Todas las respuestas a la pregunta 4
1

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' );
18 oct 2013 20:07:05
Comentarios

Esto funcionó perfectamente, muchas gracias. El método mencionado anteriormente también funcionó, pero si wp_print_scripts es una mejor práctica, usaré ese.

robolist robolist
18 oct 2013 20:36:19
1

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

18 oct 2013 20:05:10
Comentarios

No funcionó exactamente así en mi caso, pero probé wp_print_scripts como sugirió Chip Bennett y eso sí funcionó. De todos modos, gracias por la ayuda y los consejos. ¡Saludos!

robolist robolist
18 oct 2013 20:37:30
1

ver el código a continuación. Agrega una declaración IF dentro de la función.

function testingone(){ 
    if(get_option( 'MyOptionName' )){
    ?>
    <script>var Script = GoesHere; </script>
    <?php } 
      }
add_action('wp_head','testingone');
18 oct 2013 20:05:21
Comentarios

Esto funcionó perfectamente, aunque estaba seguro de que ya había probado este método antes, obviamente no :) Muchas gracias.

robolist robolist
18 oct 2013 20:34:33
6
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.

4 jul 2016 14:00:29
Comentarios

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

bravokeyl bravokeyl
4 jul 2016 14:04:40

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.

Praveen Praveen
4 jul 2016 14:08:13

¿Probaste usar ese código @bravokey?

Praveen Praveen
4 jul 2016 14:10:12

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

bravokeyl bravokeyl
4 jul 2016 14:11:28

Gracias por tu sugerencia, en realidad soy nuevo en esto @bravokeyl

Praveen Praveen
4 jul 2016 14:20:58

Por favor mira la [respuesta]

fuxia fuxia
4 jul 2016 15:04:36
Mostrar los 1 comentarios restantes