get_template_directory_uri () y otras etiquetas URL que no funcionan en el tema

2

Por lo tanto, estoy tratando de agregar get_template_directory_uri o bloginfo () a mi archivo header.php para crear rutas relativas para los archivos CSS y JS en el tema.

Por ejemplo,

    <link rel="stylesheet" href="<?php echo get_template_directory_uri(); ?>/css/style.css">

En teoría, esto debería mostrar

    <link rel="stylesheet" href="http://mysite.com/wp-content/themes/myTheme/css/style.css">

El problema es que cuando veo la etiqueta <head> en la fuente, todo lo que veo es:

    <link rel="stylesheet" href="/css/style.css">

Todas las demás etiquetas de plantilla funcionan en mis archivos (get_permalink (), the_title (), etc.), pero esta no lo es. echo get_bloginfo('url') también funciona.

Estaba pensando en jugar con el archivo wp-config.php y hacer algo como:

define('WP_HOME','http://example.com/blog');
define('WP_SITEURL','http://example.com/blog');

... pero, no estoy seguro de si esa es la mejor práctica para volver a escribir la URL.

¿Me estoy perdiendo algo?

    
pregunta aboutaaron 20.03.2012 - 22:23

5 respuestas

4

Lo que tienes:

 <link rel="stylesheet" href="<?php echo get_template_directory_uri(); ?>/css/style.css">

debería funcionar bien. He copiado y pegado en mi header.php y funcionó.

Pero esto no es la forma en que deberías incluir archivos CSS o JavaScript. La forma correcta es usar el gancho wp_enqueue_scripts . Por ejemplo, supongamos que tiene un archivo javascript que desea cargar que requiere que jQuery funcione, usted pone en cola el script y enumera jQuery como una dependencia. WordPress hace el resto:

<?php
function my_scripts_method() {
   // register your script location and dependencies
   wp_register_script('custom_script',
       get_template_directory_uri() . '/js/custom_script.js',
       array('jquery')
    );
   // enqueue the script
   wp_enqueue_script('custom_script');
}
add_action('wp_enqueue_scripts', 'my_scripts_method');
?>

Para estilos (se usa el mismo gancho):

function my_styles_method() {  
    // Register the style like this for a theme:  
    wp_register_style( 'my-custom-style', get_template_directory_uri().'/css/custom-style.css');  

    // enqueue the stule  
    wp_enqueue_style( 'my-custom-style' );  
}  
add_action( 'wp_enqueue_scripts', 'my_styles_method' ); 

Lea estas páginas del Codex en y wp_enqueue_script() y wp_enqueue_style()

Puede que no parezca importante, pero particularmente con la carga de scripts, probablemente encontrará que cargarlos 'manualmente' romperá su tema y / o complementos.

    
respondido por el Stephen Harris 20.03.2012 - 23:55
2

Un poco tarde en esto, pero me encontré con el mismo problema. Mi problema era que había cambiado todos mis archivos de tema con un tema de plantilla de inicio vacío y no seguí los pasos de instalación del tema por lo que no estaba obteniendo el directorio correcto. Volver a activar el tema podría ser un primer paso apropiado para encontrar una solución a este problema.

    
respondido por el Matt 25.07.2013 - 19:27
0

¿has probado la versión simple de bloginfo aka:

<link rel="stylesheet" type="text/css" media="all" href="<?php bloginfo('template_url); ?>/css/style.css" />

o puedes usar tu versión (es decir, get_bloginfo) pero creo que eres Debería asignarlo a una var y al eco.

<link rel="stylesheet" type="text/css" media="all" href="<?php $turl = get_bloginfo('template_url); echo tulr; ?>/css/style.css" />

...

Espero que esto te ayude a resolver tu problema ...

Saludos cordiales, Sagive.

    
respondido por el Sagive SEO 20.03.2012 - 22:54
0

si get_bloginfo ('url') está funcionando en header.php, en lugar de usar get_template_directory_uri (); utilizar bloginfo ('stylesheet_url'); función que devuelve la URL del archivo CSS principal (generalmente style.css) del tema activo.

    
respondido por el Vinod Dalvi 22.03.2012 - 06:03
0

Desactive el tema actual (es decir, active un tema diferente, digamos TwentyFourteen) y luego vuelva a activar su tema.

Cuando se activa un tema, WordPress pasa por una configuración inicial de los uri relativos, etc. y a veces hay casos (especialmente el desarrollo de nuevos temas) donde WordPress no ejecuta ese código de inicialización. La desactivación y reactivación del tema garantiza que WordPress tenga otra oportunidad de ejecutar la configuración de inicialización del tema.

    
respondido por el reor 09.04.2014 - 20:06

Lea otras preguntas en las etiquetas