在 wordpress 中正确创建 child 主题的困惑
Confusion of creating a child theme properly in wordpress
正在尝试从 wordpress twentyfifteen 主题创建 child 主题。
WordPress 法典说
Note that the previous method was to import the parent theme
stylesheet using @import: this is no longer best practice. The correct
method of enqueuing the parent theme stylesheet is to use
wp_enqueue_script() in your child theme's functions.php.
twentyfifteen的样式和javascript文件的加载函数是
function twentyfifteen_scripts() {
// Add custom fonts, used in the main stylesheet.
wp_enqueue_style( 'twentyfifteen-fonts', twentyfifteen_fonts_url(), array(), null );
// Add Genericons, used in the main stylesheet.
wp_enqueue_style( 'genericons', get_template_directory_uri() . '/genericons/genericons.css', array(), '3.2' );
// Load our main stylesheet.
wp_enqueue_style( 'twentyfifteen-style', get_stylesheet_uri() );
// Load the Internet Explorer specific stylesheet.
wp_enqueue_style( 'twentyfifteen-ie', get_template_directory_uri() . '/css/ie.css', array( 'twentyfifteen-style' ), '20141010' );
wp_style_add_data( 'twentyfifteen-ie', 'conditional', 'lt IE 9' );
// Load the Internet Explorer 7 specific stylesheet.
wp_enqueue_style( 'twentyfifteen-ie7', get_template_directory_uri() . '/css/ie7.css', array( 'twentyfifteen-style' ), '20141010' );
wp_style_add_data( 'twentyfifteen-ie7', 'conditional', 'lt IE 8' );
wp_enqueue_script( 'twentyfifteen-skip-link-focus-fix', get_template_directory_uri() . '/js/skip-link-focus-fix.js', array(), '20141010', true );
if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
wp_enqueue_script( 'comment-reply' );
}
if ( is_singular() && wp_attachment_is_image() ) {
wp_enqueue_script( 'twentyfifteen-keyboard-image-navigation', get_template_directory_uri() . '/js/keyboard-image-navigation.js', array( 'jquery' ), '20141010' );
}
wp_enqueue_script( 'twentyfifteen-script', get_template_directory_uri() . '/js/functions.js', array( 'jquery' ), '20141212', true );
wp_localize_script( 'twentyfifteen-script', 'screenReaderText', array(
'expand' => '<span class="screen-reader-text">' . __( 'expand child menu', 'twentyfifteen' ) . '</span>',
'collapse' => '<span class="screen-reader-text">' . __( 'collapse child menu', 'twentyfifteen' ) . '</span>',
) );
}
add_action( 'wp_enqueue_scripts', 'twentyfifteen_scripts' );
所以从 parent 的 functions.php
复制它并将其粘贴到 child 的 functions.php
之后我做了什么:
1.Changed 函数名称。
2.Replaced 行
wp_enqueue_style( 'twentyfifteen-style', get_stylesheet_uri() );
和
wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
3.Removed javascript 个文件的代码。
我是否也删除了不是 parent 主题的主要样式 sheet 的其他样式 sheet?
如何正确包含 child 主题中的另一种样式 sheet?
(我只使用 wp_enqueue_style( 'child-style', get_stylesheet_directory_uri() . '/style.css' );
吗?)
制作子主题不需要太多,你问题中的大部分代码都不需要:
- 在您的 'themes' 目录中创建一个文件夹,并根据您的喜好命名。 twentyfifteenchild 会说清楚的
创建一个名为 style.css 的文件并将以下内容放在顶部:
/*
Theme Name: Twenty Fifteen Child
Theme URI: http://example.com/twenty-fifteen-child/
Description: Twenty Fifteen Child Theme
Author: John Doe
Author URI: http://example.com
Template: twentyfifteen
Version: 1.0.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Tags: light, dark, two-columns, right-sidebar, responsive-layout, accessibility-ready
Text Domain: twenty-fifteen-child
*/
创建一个 functions.php 文件并将以下内容粘贴到其中:
<?php
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
}
奇怪,我可以回答但还不能发表评论...我也想知道为什么人们在 CSS 中使用 @import,而 WordPress 特别说明是这样的:
以下示例函数仅在您的父主题仅使用一个主 style.css 来容纳所有 css 时才有效。如果您的主题有多个 .css 文件(例如 ie.css、style.css、main.css),那么您必须确保维护所有父主题依赖项.
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
}
将 'parent-style' 设置为依赖项将确保子主题样式表在它之后加载。请参阅此处更详细的讨论:
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_directory_uri() . '/style.css',
array('parent-style')
);
}
我现在实际上了解到我并不总是做依赖关系的事情...noob/designer 失败或错误的文档失败...?!?
正在尝试从 wordpress twentyfifteen 主题创建 child 主题。 WordPress 法典说
Note that the previous method was to import the parent theme stylesheet using @import: this is no longer best practice. The correct method of enqueuing the parent theme stylesheet is to use wp_enqueue_script() in your child theme's functions.php.
twentyfifteen的样式和javascript文件的加载函数是
function twentyfifteen_scripts() {
// Add custom fonts, used in the main stylesheet.
wp_enqueue_style( 'twentyfifteen-fonts', twentyfifteen_fonts_url(), array(), null );
// Add Genericons, used in the main stylesheet.
wp_enqueue_style( 'genericons', get_template_directory_uri() . '/genericons/genericons.css', array(), '3.2' );
// Load our main stylesheet.
wp_enqueue_style( 'twentyfifteen-style', get_stylesheet_uri() );
// Load the Internet Explorer specific stylesheet.
wp_enqueue_style( 'twentyfifteen-ie', get_template_directory_uri() . '/css/ie.css', array( 'twentyfifteen-style' ), '20141010' );
wp_style_add_data( 'twentyfifteen-ie', 'conditional', 'lt IE 9' );
// Load the Internet Explorer 7 specific stylesheet.
wp_enqueue_style( 'twentyfifteen-ie7', get_template_directory_uri() . '/css/ie7.css', array( 'twentyfifteen-style' ), '20141010' );
wp_style_add_data( 'twentyfifteen-ie7', 'conditional', 'lt IE 8' );
wp_enqueue_script( 'twentyfifteen-skip-link-focus-fix', get_template_directory_uri() . '/js/skip-link-focus-fix.js', array(), '20141010', true );
if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
wp_enqueue_script( 'comment-reply' );
}
if ( is_singular() && wp_attachment_is_image() ) {
wp_enqueue_script( 'twentyfifteen-keyboard-image-navigation', get_template_directory_uri() . '/js/keyboard-image-navigation.js', array( 'jquery' ), '20141010' );
}
wp_enqueue_script( 'twentyfifteen-script', get_template_directory_uri() . '/js/functions.js', array( 'jquery' ), '20141212', true );
wp_localize_script( 'twentyfifteen-script', 'screenReaderText', array(
'expand' => '<span class="screen-reader-text">' . __( 'expand child menu', 'twentyfifteen' ) . '</span>',
'collapse' => '<span class="screen-reader-text">' . __( 'collapse child menu', 'twentyfifteen' ) . '</span>',
) );
}
add_action( 'wp_enqueue_scripts', 'twentyfifteen_scripts' );
所以从 parent 的 functions.php
复制它并将其粘贴到 child 的 functions.php
之后我做了什么:
1.Changed 函数名称。
2.Replaced 行
wp_enqueue_style( 'twentyfifteen-style', get_stylesheet_uri() );
和
wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
3.Removed javascript 个文件的代码。
我是否也删除了不是 parent 主题的主要样式 sheet 的其他样式 sheet?
如何正确包含 child 主题中的另一种样式 sheet?
(我只使用 wp_enqueue_style( 'child-style', get_stylesheet_directory_uri() . '/style.css' );
吗?)
制作子主题不需要太多,你问题中的大部分代码都不需要:
- 在您的 'themes' 目录中创建一个文件夹,并根据您的喜好命名。 twentyfifteenchild 会说清楚的
创建一个名为 style.css 的文件并将以下内容放在顶部:
/* Theme Name: Twenty Fifteen Child Theme URI: http://example.com/twenty-fifteen-child/ Description: Twenty Fifteen Child Theme Author: John Doe Author URI: http://example.com Template: twentyfifteen Version: 1.0.0 License: GNU General Public License v2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html Tags: light, dark, two-columns, right-sidebar, responsive-layout, accessibility-ready Text Domain: twenty-fifteen-child */
创建一个 functions.php 文件并将以下内容粘贴到其中:
<?php add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' ); function theme_enqueue_styles() { wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' ); }
奇怪,我可以回答但还不能发表评论...我也想知道为什么人们在 CSS 中使用 @import,而 WordPress 特别说明是这样的:
以下示例函数仅在您的父主题仅使用一个主 style.css 来容纳所有 css 时才有效。如果您的主题有多个 .css 文件(例如 ie.css、style.css、main.css),那么您必须确保维护所有父主题依赖项.
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
}
将 'parent-style' 设置为依赖项将确保子主题样式表在它之后加载。请参阅此处更详细的讨论:
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_directory_uri() . '/style.css',
array('parent-style')
);
}
我现在实际上了解到我并不总是做依赖关系的事情...noob/designer 失败或错误的文档失败...?!?