加载/入队父样式表和子样式表以启用缓存分解的建议方法

时间:2016-08-08 作者:hansfn

在阅读了这里的几个帖子后(包括[1] 以及[2]) 并且使用Wordpress 4.5.3测试,使用216th作为父主题,我认为以下代码(在functions.php中)必须是正确的:

function childtheme_enqueue_styles() {
  $parent_style = \'twentysixteen-style\';
  wp_enqueue_style(
    $parent_style,
    get_template_directory_uri() . \'/style.css\'
  );
  wp_enqueue_style(
    \'childtheme-style\',
    get_stylesheet_directory_uri() . \'/style.css\',
    array( $parent_style ),
    wp_get_theme()->get(\'Version\')
  );
}

add_action( \'wp_enqueue_scripts\', \'childtheme_enqueue_styles\' );
它加载父样式表(具有父主题版本号),然后加载子主题样式表(具有子主题版本号)。这似乎支持独立的缓存破坏。

我还读了documentation 我非常自信地更新了它以反映我的发现。。。

附言我的声誉太低,无法对现有帖子发表评论或发布新的答案,所以我“被迫”将此作为新问题发布。不管怎样,我认为这个问题是可以的——如果我错了,文档会得到审查。

1 个回复
SO网友:NextGenThemes

twentysixteen 令人惊讶的是,他做得很糟糕。他们应该首先使用正确的版本属性注册父主题样式和脚本wp_register_style 在儿童主题中,你可以这样做。

wp_enqueue_style( $parent_style );
获取用于缓存破坏父主题样式的样式的正确版本。但是你也可能会混淆一些东西,因为你只需要在父主题更新时才需要它,而且这种情况不会发生太多,所以它对父主题并不重要,但对你当前正在处理的主题更重要。如果你不想在开发过程中一直更新这个版本,我有一些建议。

还应该有一种方法来读取父主题版本并将其传递给ver. 这可能就是你要问的;)知道知道知道。

可能会有帮助:我最近想出了一个只在开发中使用filemtime的函数

<?php
namespace Nextgenthemes\\NativeLazyloadPolyfill;

const VERSION     = \'0.9.12\';
const VERY_LATE   = PHP_INT_MAX - 5;
const PLUGIN_FILE = __FILE__;
const PLUGIN_DIR  = __DIR__;

init();

function init() {

    $ns = __NAMESPACE__;

    add_action( \'wp_enqueue_scripts\', "$ns\\\\action_wp_enqueue_scripts" );
}

function action_wp_enqueue_scripts() {

    wp_register_script(
        \'nextgenthemes-loading-attribute-polyfill\',
        plugins_url( \'node_modules/loading-attribute-polyfill/loading-attribute-polyfill.min.js\', PLUGIN_FILE ),
        array(),
        ver( VERSION, \'node_modules/loading-attribute-polyfill/loading-attribute-polyfill.min.js\', PLUGIN_FILE ),
        false
    );

    wp_enqueue_script( \'nextgenthemes-loading-attribute-polyfill\' );
}

function ver( $ver, $path, $file ) {

    if ( defined( \'WP_DEBUG\' ) && WP_DEBUG ) {
        $ver = filemtime( trailingslashit( dirname( $file ) ) . $path );
    }

    return $ver;
}
实际上我不想在那个插件中使用它,但它很容易复制粘贴和剪切代码。其仿照plugins_url 以版本作为第一个参数。在父子主题场景中,您需要函数的常量。主题的php文件,并将其传递给函数。

相关推荐

Child-theme breaks site

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