wp enqueue стиль на певних шаблонах сторінок


24

Я перебуваю в процесі теми, я хотів би додати цільові сторінки за допомогою шаблонів сторінок. Я не можу ніде знайти, що показує, як задати стиль або js для певних шаблонів сторінок. Будь-які пропозиції. Вих. Цільова сторінка 1 - цільова сторінка-шаблон-one.php потребує зовсім іншого стилю та js, ніж блог чи домашня сторінка.

Відповіді:


29

Якщо ви плануєте багато розробити WP, вам слід зробити закладку на цій сторінці: http://codex.wordpress.org/Conditional_Tags

Інша відповідь спрацьовує, але умовна залежність від вашої сторінки слизька (myurl.com/this-is-the-slug) ніколи не змінюється. Більш надійним методом (ІМО) і таким, який відповідає цьому випадку, буде використання is_page_template('example-template.php')умовної перевірки замість цього.


23

Ви можете використовувати is_page( 'landing-page-template-one' )умовні навколо вашої сторінки певні стилі / сценарії як частину ваших заяв над усіма запитами.

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' );

Ви можете навіть більше elseifзав'язати вищезазначене для інших сторінок тощо.

Довідка: Довідка про функції -is_page()


Вас вітає Шон, радий допомогти.
Едвард Кейсі

2
Я вважаю, що використовувати is_page_template()краще, оскільки слизьку сторінки легко змінювати. Це рішення, хоча воно прекрасно працює, може зламатися, якби зміна булавки. Дивіться рішення kchjr, якщо хтось зіткнеться з проблемами в майбутньому.
BODA82

Дякую! Для інших, хто натрапив на це: умовне твердження is_pageповинно бути у функції, приєднаній до дії, а не обгортання самого add_actionтвердження. Якщо ви загортаєте add_actionвисловлювання умовно, це буде рано на обробці сторінки, щоб знати, що це за сторінка.
Хендека

2

Якщо шаблон сторінки розташований у підкаталозі теми (з WP 3.4), додайте назву папки та косу рису до назви файлу шаблону, наприклад:

is_page_template( 'templates/about.php' );

Отже, вся функція виглядає так:

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' );

Довідка: Офіційні документи


Дякуємо, що зазначили, що is_page_template ()чек повинен знаходитися всередині функції enqueue, а не навколо неї.
gregn3

1

Я не знаю, чи використовувались рішення, запропоновані в інших відповідях, але (оскільки немає прийнятої відповіді!) Здається, що правильна відповідь наразі є:

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 () працює лише поза циклом, згідно https://developer.wordpress.org/reference/functions/is_page_template/ .


згідно згаданими документами, його не можна використовувати всередині циклу
Selrond

поза петлею. ось що я сказав ... * червоніти *
richplane

1

Скажіть, що назва вашого шаблону - більш вдалий, і ви хочете завантажити завантажувальну сторінку на цю сторінку, щоб ви могли вписати стиль у певні шаблони сторінок на зразок цього:

перейдіть до файлу function.php, тоді перевірте такий стан:

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');
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.