很抱歉还在问这个问题,这是在尝试了以前的答案之后。在functions.php中添加样式表切换器函数没有任何效果,因为wp_head()仍然继续应用默认样式表(style.css)。
添加:
add_action( 'wp_enqueue_scripts', 'customstyles' );
function customstyles() { echo "hello world";
if ( is_page('306') ) {
wp_enqueue_style( '306page', get_stylesheet_uri()); //page-specific css for unique page
}
else {wp_enqueue_style( 'styles', get_stylesheet_uri() ); } //default stylesheet
}
在主题的functions.php中,然后从header.php调用<?php customstyles(); ?>
无效,默认的style.css仍然会应用于所有页面。
尝试从header.php中删除wp_head()并仅保留自定义函数,但之后没有应用样式表,这进一步证明了wp_head()正在处理链接的css。
那么如何自定义wp_head()以便它不会覆盖通过functions.php或其他地方的代码添加的样式表?为什么在首先忽略functions.php中的样式表代码?在customstyles()中使用echo'hello world'进行测试时,在页面上输出了hello world,但忽略了函数的样式表代码。 WP_DEBUG也设置为true并且没有错误。
编辑:
这是head部分中的wordpress代码,加上自定义函数调用:
<head profile="http://gmpg.org/xfn/11">
<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />
<?php if (is_search()) { ?>
<meta name="robots" content="noindex, nofollow" />
<?php } ?>
<title>
<?php
if (function_exists('is_tag') && is_tag()) {
single_tag_title("Tag Archive for ""); echo '" - '; }
elseif (is_archive()) {
wp_title(''); echo ' Archive - '; }
elseif (is_search()) {
echo 'Search for "'.wp_specialchars($s).'" - '; }
elseif (!(is_404()) && (is_single()) || (is_page())) {
wp_title(''); echo ' - '; }
elseif (is_404()) {
echo 'Not Found - '; }
if (is_home()) {
bloginfo('name'); echo ' - '; bloginfo('description'); }
else {
bloginfo('name'); }
if ($paged>1) {
echo ' - page '. $paged; }
?>
</title>
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
<link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />
<?php customstyles(); ?>
<?php wp_head(); ?>
默认样式表实际上适用于通用页面。它只是不在页面'306'上应用自定义样式表。但我已经验证了样式表名称在wp_register_style('thisIsTheCustomStyleThatWontApplyButIsSpelledRightAndIsInTheSameDirectoryAsTheDefaultStylesheet',get_template_directory_uri())方法中是正确的。在get_template_directory_uri()中添加了“/”,但没有解决它。
答案 0 :(得分:0)
function customstyles()
{
if ( is_page( '306' ) ) {
//Register and enqueue the stylesheet for 306 page.
wp_register_style( '306page', get_template_directory_uri() . '/css/306.css' );
wp_enqueue_style( '306page' );
} else {
//Register and enqueue the default stylesheet.
wp_register_style( 'styles', get_stylesheet_uri() );
wp_enqueue_style( 'styles' );
}
}
add_action( 'wp_enqueue_scripts', 'customstyles' );
以上代码(未经测试)应该有所帮助。