Wordpress中特定URL下所有页面的自定义CSS文件

时间:2019-07-10 20:31:52

标签: php wordpress

我有一个网站,该网站有2个部分,每个部分具有不同的CSS和特定的URL(即testsite.com/one/和testsite.com/two/),我需要对每个URL和所有路径应用特定的样式表属于那些(例如testsite.com/one/test testsite.com/one/test2等等),因此对于testsite.com/one/*,所有人都会得到一个名为one.css的css文件,对于testsite.com/two/ *所有人都会得到一个名为two.css的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 个答案:

答案 0 :(得分:2)

您可以尝试检查所请求的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' );

答案 1 :(得分:0)

我还没有测试过,但是这个想法是找到顶级祖先,并与该帖子/页面标题进行比较。

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

答案 2 :(得分:0)

这可能取决于您是否指定子页面具有父页面。或者,如果它们只是在该路径之内。

如果子页面具有指定为父页面的页面,则可以执行以下操作:

// 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上面指出的永久链接。