2011-07-24 11 views
7

En un archivo .js, necesito obtener el directorio de plantilla de un tema de Wordpress, es decir, necesito obtener el valor de retorno de <?php bloginfo('template_directory');?> dentro del archivo js.php dentro de js-file Wordpress

La idea es algo así como:

var blogTemplateDir = "<?php bloginfo('template_directory');?>"; 

¿Cómo se puede lograr? ¿Cuál es la forma estándar (Wordpress) de hacer esto?

Respuesta

4

Como Erik publicó anteriormente, la extensión del archivo JavaScript no tiene sentido, ya que al final todo se reduce al contenido. Al encontrarse con esta situación durante el desarrollo, me di cuenta que tenía que añadir lo siguiente a la parte superior de la llamada de JavaScript del archivo:

<?php 

    //Let's set the header straight 
    header('Content-type: text/javascript'); 

    //Get the WP-specifics, so that we can use constants and what not 
    $home_dir = preg_replace('^wp-content/plugins/[a-z0-9\-/]+^', '', getcwd()); 
    include($home_dir . 'wp-load.php'); 
?> 

Esto garantiza la obtención de las definiciones en su JavaScript en archivos, y se puede utilice también el ejemplo anterior con temas (simplemente asegúrese de cambiar el /plugins en /themes).

+0

Gracias, estaba pensando si lo hago ' 'dentro de header.php, por qué no puedo acceder al valor de' templateDir' dentro de mi archivo .js. ¿Hay alguna manera de hacer que esto funcione, por lo que puedo guardar mis archivos js? – Ben

+1

Bueno, ¿está configurando 'templateDir' antes de cargar los otros archivos JavaScript? Si es así, debería ser posible usar las variables en sus archivos js. 'Archivo 1 (index.php): http: // pastebin.com/sQGnmM9S' ' Archivo 2 (javascript.js): http: // pastebin.com/cnUv5inD' – ninetwozero

+0

Gracias, había recibido el pedido mal antes. ¡Ahora funciona! :) – Ben

3

La extensión de archivo para un archivo javascript no tiene sentido. Puede usar PHP para generar su archivo javascript tal como lo hace con las páginas HTML. Incluir el archivo JS como:

<script src="my_javascript_file.php"></script> 

Y a continuación, puede utilizar la línea de su pregunta en el archivo javascript:

var blogTemplateDir = "<?php bloginfo('template_directory');?>"; 
+0

Uso de '' conduce a errores extraños en otros archivos. No me preguntes, solo mata mi página. Si hago ' 'en cambio, entonces funciona. Además, si sigo esta solución, tengo que ajustar todo mi código js en '

Cuestiones relacionadas