WordPress+儿童主题=我错过了什么吗?

时间:2015-01-15 作者:tsquez

我有一个问题,让我抓挠我的头,如果我再抓挠,我就会秃顶。我已经到处寻找解决方案,但没有找到任何解决方案,所以我想我会顺便来看一下,看看你们这些专家是否能提供帮助。

我创建了一个名为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相同。

只是想知道是否有人遇到过这个特殊的问题,或者是否有人可以解释为什么会发生这种情况,以便我可以纠正它?

非常感谢您的帮助,并提前向您表示感谢。

3 个回复
SO网友:tsquez

事实上,@PieterGoosen在更正抄本并删除对额外样式表的调用时解决了这个问题。所以事实上这是应该的

add_action( \'wp_enqueue_scripts\', \'theme_enqueue_styles\' );
 function theme_enqueue_styles() {
   wp_enqueue_style( \'parent-style\', get_template_directory_uri() . \'/style.css\' );
}
谢谢Pieter。

SO网友:user3325126

你有没有试着像抄本上说的那样添加下一行代码?

Codex:

add_action( \'wp_enqueue_scripts\', \'theme_enqueue_styles\' );
 function theme_enqueue_styles() {
   wp_enqueue_style( \'parent-style\', get_template_directory_uri() . \'/style.css\' );
   wp_enqueue_style( \'child-style\', get_stylesheet_uri(), array( \'parent-style\' ) );//Add this to wpstarter_styles();
}

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将获得父主题的正确模板目录。

理论上这一切我都没有机会帮你检查(祈祷吧)

结束

相关推荐

Child-theme breaks site

所以,我有一个子主题,里面除了所需的CSS文件之外什么都没有。一旦我激活了这个儿童主题,我的整个网站就关闭了。最后我有两个问题:激活一个只有CSS的子主题怎么能破坏我的网站</我怎样才能回到我原来的主题</这些是网站给我的错误:Warning: require_once(/wp-content/themes/interio_child/admin/options-framework.php) [function.require-once]: 无法打开流:中没有此类文件或目录/wp-c