Пользовательский файл CSS для всех страниц под определенным URL в WordPress - PullRequest
0 голосов
/ 10 июля 2019

У меня есть веб-сайт, на котором есть 2 раздела, каждый с разными css и определенными URL-адресами (т. Е. Testsite.com/one/ и testsite.com/two/). Мне нужно применить конкретные таблицы стилей к каждому из этих URL-адресов и ко всем путям.подпадающих под них (т.е. testsite.com/one/test testsite.com/one/test2 и т. д.), так что для testsite.com/one/* все получат файл css с именем one.css и для testsite.com/two/* все получат имена файлов css two.css

<?php 
function wpdocs_theme_name_scripts() {
 if ( is_page( 'two') ) {
    // If page matches, then load the following files
    wp_enqueue_style('two', get_template_directory_uri().'/two.css',false,'1','screen' );
   // If the condition tag does not match...
   } else {
  }
}
add_action( 'wp_enqueue_scripts', 'wpdocs_theme_name_scripts' );?>

Проблема заключается в том, что он применяет только файл css к testsite.com/two и ничего кроме этого, например testsite.com/two/xx или testsite.com/two / bbb Мне нужно, чтобы файл css применялся ко всем каталогам, включая и после testsite.com/two/ Имеет ли это смысл?

Ответы [ 3 ]

2 голосов
/ 11 июля 2019

Вы можете попробовать проверить, содержит ли запрошенный URI строку, идентифицирующую ваш «подузел».

Код теперь расширен до демо-версии else, elesif и "or", чтобы охватить последующие вопросы в комментариях. вопросы в комментариях.

 function wpdocs_theme_name_scripts() {
   global $post;   
   $perma = get_permalink( $post->ID );  // or use get_page_uri??

   if (strpos($perma, '/two/') !== false  || strpos($perma, '/anything/') !== false) {
      wp_enqueue_style('two', get_template_directory_uri().'/two.css',false,'1','screen' );
   } 
   elseif (strpos($perma, '/THREE/') !== false) {
      wp_enqueue_style('three', get_template_directory_uri().'/THREE.css',false,'1','screen' );
   }
   else {  // if you want to enqueue some default CSS for all other pages
      wp_enqueue_style('default', get_template_directory_uri().'/default.css',false,'1','screen' );
   }

}
add_action( 'wp_enqueue_scripts', 'wpdocs_theme_name_scripts' );
0 голосов
/ 11 июля 2019

Это может зависеть от того, указана ли у вас подстраница родительская страница. Или если они просто на этом пути.

Если на подстраницах есть страница, указанная как родительская, вы можете сделать это:

// for the number, use the ID of the parent page

if ( is_page( 'one' ) || '1' == $post->post_parent ) {    
    // the page is "one", or the parent of the page is "one"
    wp_enqueue_style('one', get_template_directory_uri().'/one.css',false,'1','screen' );
}

if ( is_page( 'two' ) || '2' == $post->post_parent ) {    
    // the page is "two", or the parent of the page is "two"
    wp_enqueue_style('two', get_template_directory_uri().'/two.css',false,'1','screen' );
}

Если родитель не указан, вам нужно проверить постоянную ссылку, как было отмечено выше scytale.

0 голосов
/ 11 июля 2019

Я не проверял это, но идея в том, чтобы найти предка верхнего уровня и сравнить с заголовком этого поста / страницы.

$post = get_post();
if ($post->post_parent) {
    $ancestors=get_post_ancestors($post->ID);
    $root=count($ancestors)-1;
    $parent = $ancestors[$root];
} else {
    $parent = $post->ID;
}

if(strtolower(get_the_title($parent)) == 'two') {
    wp_enqueue_style('two', get_template_directory_uri().'/two.css',false,'1','screen' );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...