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.

Sean
fuente

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.

kchjr
fuente
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()

Edward Caissie
fuente
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

Razon K.
fuente
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/ .

richplane
fuente
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');
Touhid Imam
fuente