estilo de cola de wp en plantillas de página específicas


24

Estoy en el proceso de un tema, me gustaría agregar páginas de destino utilizando plantillas de página. No puedo encontrar ningún lugar que muestre cómo poner en cola estilo o js para plantillas de página específicas. Alguna sugerencia. Ex. Landing Page 1 - landing-page-template-one.php necesitará un estilo y js muy diferentes que el blog o la página de inicio.

Respuestas:


29

Si planea hacer mucho desarrollo de WP, debe marcar esta página: http://codex.wordpress.org/Conditional_Tags

La otra respuesta funciona, pero el condicional se basa en que la página de slug (myurl.com/this-is-the-slug) nunca cambie. Un método más confiable (IMO), y uno que se ajuste a este caso, sería usar la is_page_template('example-template.php')verificación condicional en su lugar.


22

Puede usar el is_page( 'landing-page-template-one' )condicional alrededor de los estilos / scripts específicos de su página como parte de sus declaraciones generales en cola.

function my_enqueue_stuff() {
  if ( is_page( 'landing-page-template-one' ) ) {
    /** Call landing-page-template-one enqueue */
  } else {
    /** Call regular enqueue */
  }
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_stuff' );

Incluso podría encadenar más elseifen lo anterior para otras páginas, etc.

Referencia: Referencia de funciones -is_page()


De nada Sean, encantado de ayudar.
Edward Caissie

2
Creo que is_page_template()es preferible usarlo ya que la babosa de la página se cambia fácilmente. Esta solución, aunque funciona bien, se rompería si se cambiara la babosa. Vea la solución de kchjr si alguien tiene problemas en el futuro.
BODA82

¡Gracias! Para otros que tropezaron con esto: la declaración condicional is_pagedebe estar en la función adjunta a la acción y no envolver la add_actiondeclaración en sí. Si envuelve la add_actiondeclaración en un condicional, será al principio del procesamiento de la página para saber qué página es.
Hendeca

2

Si la plantilla de página se encuentra en un subdirectorio del tema (desde WP 3.4), anteponga el nombre de la carpeta y una barra diagonal al nombre de archivo de la plantilla, por ejemplo:

is_page_template( 'templates/about.php' );

Entonces, toda la función se ve así:

function my_enqueue_stuff() {
  if ( is_page_template( 'landing-page-template-one' ) ) {
    /** Call landing-page-template-one enqueue */
  } else {
    /** Call regular enqueue */
  }
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_stuff' );

Referencia: Documentaciones oficiales


Gracias por mencionar que la is_page_template ()verificación debe estar dentro de la función en cola y no alrededor de ella.
gregn3

1

No sé si las soluciones proporcionadas en otras respuestas solían funcionar, pero (¡ya que no hay una respuesta aceptada!) Parece que la respuesta correcta es actualmente:

function my_enqueue_stuff() {
    if ( get_page_template_slug() == 'landing-page-template-one.php' ) {
        wp_enqueue_script('my-script-handle', 'script-path.js', ... );
    }
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_stuff' );

is_page_template () solo funciona fuera del ciclo, de acuerdo con https://developer.wordpress.org/reference/functions/is_page_template/ .


de acuerdo con los documentos mencionados, no se puede usar dentro del ciclo
Selrond

fuera del circuito. eso es lo que dije ... * blush *
richplane

1

Digamos que el nombre de su plantilla es moderado y desea cargar bootstrap en esa página para que pueda poner estilo en plantillas de página específicas como esta:

vaya al archivo function.php y luego verifique la condición de esta manera:

function temper_scripts() {

    if(basename(get_page_template()) == 'temper.php'){

       wp_enqueue_style('bootstrap', '//stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css');

    }

}

add_action('wp_enqueue_scripts', 'temper_scripts');
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.