我有一个问题,让我抓挠我的头,如果我再抓挠,我就会秃顶。我已经到处寻找解决方案,但没有找到任何解决方案,所以我想我会顺便来看一下,看看你们这些专家是否能提供帮助。
我创建了一个名为WP Forge的主题,然后创建了一个子主题,用于WP Forge,名为WP Starterhttp://wpstarter.themeawesome.com/
当我创建WP Starter时,仍在使用@import方法,现在我看到有一种新的方法可以拉入父css:http://codex.wordpress.org/Child_Themes
然而,当我更新WP-Starter以使用这种新的方式引入父css时,似乎得到了两个版本的WP-Starter样式表。如果您查看上面列出的WP Starter演示站点的源代码,您将看到wpforge css与子样式css完全相同。
在我的父主题中,所有脚本和样式都以以下方式排队:
function wpforge_scripts() {
// Enqueue our stylesheets
wp_enqueue_style(\'opensans-style\', \'http://fonts.googleapis.com/css?family=Open+Sans:300,600\');
wp_enqueue_style(\'font-style\', get_template_directory_uri() . \'/fonts/wpforge-fonts.css\');
wp_enqueue_style(\'normalize-style\', get_template_directory_uri() . \'/css/normalize.css\');
wp_enqueue_style(\'foundation-style\', get_template_directory_uri() . \'/css/foundation.css\');
wp_enqueue_style(\'wpforge-style\', get_stylesheet_uri());
// Register our scripts
wp_enqueue_script (\'modernizr\', get_template_directory_uri() . \'/js/vendor/modernizr.js\', array(\'jquery\'), \'5.5.0.3\', false);
wp_enqueue_script (\'foundation-js\', get_template_directory_uri() . \'/js/foundation.min.js\', array(\'jquery\'), \'5.5.0.3\', true);
wp_enqueue_script (\'functions-js\', get_template_directory_uri() . \'/js/wpforge-functions.js\', array(\'jquery\'), \'5.5.0.3\', true);
// Make the "Back" string in Foudation mobile menu translatable
$translation_array = array( \'nav_back\' => __( \'Back\', \'wpforge\' ) );
wp_localize_script( \'foundation-js\', \'foundation_strings\', $translation_array );
}
add_action( \'wp_enqueue_scripts\', \'wpforge_scripts\' );
在我的孩子主题WP Starter中,我所拥有的是:
function wpstarter_styles() {
wp_enqueue_style( \'parent-theme\', get_template_directory_uri() . \'/style.css\' );
}
add_action( \'wp_enqueue_scripts\', \'wpstarter_styles\', 100 );
现在,当您查看演示网站的页面源代码时,您将看到以下内容:
<title>WP-Starter | A WordPress Child Theme for WP-Forge</title>
<link rel=\'stylesheet\' id=\'wpforge-fonts-css\' href=\'http://wpstarter.themeawesome.com/wp-content/themes/wp-forge/fonts/wpforge-fonts.css\' type=\'text/css\' media=\'all\' />
<link rel=\'stylesheet\' id=\'normalize-css\' href=\'http://wpstarter.themeawesome.com/wp-content/themes/wp-forge/css/normalize.css\' type=\'text/css\' media=\'all\' />
<link rel=\'stylesheet\' id=\'foundation-css\' href=\'http://wpstarter.themeawesome.com/wp-content/themes/wp-forge/css/foundation.css\' type=\'text/css\' media=\'all\' />
<link rel=\'stylesheet\' id=\'wpforge-css\' href=\'http://wpstarter.themeawesome.com/wp-content/themes/wpstarter/style.css\' type=\'text/css\' media=\'all\' />
<link rel=\'stylesheet\' id=\'parent-style-css\' href=\'http://wpstarter.themeawesome.com/wp-content/themes/wp-forge/style.css\' type=\'text/css\' media=\'all\' />
<link rel=\'stylesheet\' id=\'child-style-css\' href=\'http://wpstarter.themeawesome.com/wp-content/themes/wpstarter/style.css\' type=\'text/css\' media=\'all\' />
如果单击wpforge css,它与子样式css相同。
只是想知道是否有人遇到过这个特殊的问题,或者是否有人可以解释为什么会发生这种情况,以便我可以纠正它?
非常感谢您的帮助,并提前向您表示感谢。
SO网友:Craig Pearson
我已经有一段时间没有处理子主题了,但我想这里的问题是您正在使用get_stylesheet_uri
而不是get_template_directory_uri
请尝试使用此选项,注意我如何更改get_stylesheet_uri
具有get_template_directory_uri
function wpforge_scripts() {
// Enqueue our stylesheets
wp_enqueue_style(\'opensans-style\', \'http://fonts.googleapis.com/css?family=Open+Sans:300,600\');
wp_enqueue_style(\'font-style\', get_template_directory_uri() . \'/fonts/wpforge-fonts.css\');
wp_enqueue_style(\'normalize-style\', get_template_directory_uri() . \'/css/normalize.css\');
wp_enqueue_style(\'foundation-style\', get_template_directory_uri() . \'/css/foundation.css\');
wp_enqueue_style(\'wpforge-style\', get_template_directory_uri() . \'/style.css\');
// Register our scripts
wp_enqueue_script (\'modernizr\', get_template_directory_uri() . \'/js/vendor/modernizr.js\', array(\'jquery\'), \'5.5.0.3\', false);
wp_enqueue_script (\'foundation-js\', get_template_directory_uri() . \'/js/foundation.min.js\', array(\'jquery\'), \'5.5.0.3\', true);
wp_enqueue_script (\'functions-js\', get_template_directory_uri() . \'/js/wpforge-functions.js\', array(\'jquery\'), \'5.5.0.3\', true);
// Make the "Back" string in Foudation mobile menu translatable
$translation_array = array( \'nav_back\' => __( \'Back\', \'wpforge\' ) );
wp_localize_script( \'foundation-js\', \'foundation_strings\', $translation_array );
}
add_action( \'wp_enqueue_scripts\', \'wpforge_scripts\' );
现在父样式表已正确加载,我们可以使用调用子主题的样式表
get_stylesheet_uri
并将父主题样式表的依赖项传递给它,该父主题样式表由其注册的句柄引用
wpforge-style
function wpstarter_styles() {
wp_enqueue_style( \'wp-starter\', get_stylesheet_uri(), array( \'wpforge-style\' ) );
}
add_action( \'wp_enqueue_scripts\', \'wpstarter_styles\', 100 );
这是因为
get_stylesheet_uri
获取当前活动主题样式表URI。因此,当首先加载子主题时,它将执行以下功能
wpforge_scripts
从其父主题-在代码中指定
get_stylesheet_uri
因此,实际上是获取子主题的URI,因为它是活动的,而不是父主题。将此替换为get\\u template\\u directory\\u uri将获得父主题的正确模板目录。
理论上这一切我都没有机会帮你检查(祈祷吧)