【问题标题】:problem with paths wordpress in subfolder子文件夹中路径wordpress的问题
【发布时间】:2021-11-02 17:29:11
【问题描述】:

我将内核文件 wordpress 移动到了一个子文件夹
现在在根目录下有一个文件夹“内容”和“内核”
遇到了一些问题
某些命令仅适用于子文件夹“内核”
例如...
我使用此功能为名称脚本和样式添加更改时间

function put_modified_time_version($src, $baseUrl){
    if ($src && strpos($src, $baseUrl) === 0) {
        $newSrc = remove_query_arg('ver', $src);
        $path = substr($newSrc, strlen($baseUrl));
        $path = wp_parse_url($path, PHP_URL_PATH);
        if ($mtime = @filemtime(untrailingslashit(ABSPATH) . $path)) {
            $src = add_query_arg('ver', $mtime, $newSrc);
        }
    }
    return $src;
}
add_filter('style_loader_src', 'modified_time_version_style', 15, 1);
function modified_time_version_style($src) {
    return ($src) ? put_modified_time_version($src, wp_styles()->base_url) : $src;
}
add_filter('script_loader_src', 'modified_time_version_script', 15, 1);
function modified_time_version_script($src) {
    return ($src) ? put_modified_time_version($src, wp_scripts()->base_url) : $src;
}

这仅适用于“内核”文件夹中的 js 和 css


功能从文件夹“内容”工作
认为$url = substr($newSrc, strlen($baseUrl));有问题
告诉我如何更好地正确指定它以便一切正常?

【问题讨论】:

    标签: php wordpress path


    【解决方案1】:

    如果ABSPATH 没有返回正确的内容,请尝试其他一些内容。如果您想要与当前文件相关的路径不同的路径,则在具有正确路径的文件(例如主插件文件)中定义一个常量,并改用该常量。例如在你的主 plugin.php 中

    define('INTERESTING_PATH', ABSPATH);
    define('INTERESTING_PATH2', ABSPATH . '/content/');
    define('INTERESTING_PATH3', WP_CONTENT_DIR);
    define('SITE_ROOT', str_replace('wp-content', '', WP_CONTENT_DIR));
    define('PLUGIN_STUFF', plugin_dir_path(__FILE__));
    

    然后在代码中的其他任何地方都可以使用常量。例如

    $fp = fopen( INTERESTING . "sitemap.xml", 'w' );
    

    如果您需要层次结构中更高的目录,请使用dirname($path)。例如define('WHATEVER', dirname(dirname(__FILE__)));define('WHATEVER', dirname(dirname(__FILE__)) . '/content/');

    【讨论】:

    • 谢谢,但它不会改变任何功能,但只能看到内核文件文件夹
    • 如果您需要层次结构中更高的目录,请使用dirname($path)。例如define('WHATEVER', dirname(dirname(__FILE__)));define('WHATEVER', dirname(dirname(__FILE__)) . '/content/');
    【解决方案2】:

    正如我上面写的
    将核心文件传输到子文件夹时发现一个奇怪的问题
    例如...
    为 js 和 css 添加版本控制的函数
    此功能添加版本控制,无论核心文件的位置如何 问题出在$baseURL 可能对某人有用

    function version_asset( $src, $handle, &$deps ) {
        $path = parse_url( $src, PHP_URL_PATH );
        foreach ( $deps->default_dirs as $dir ) {
            if ( 0 === strpos( $path, $dir ) ) {
                return $src;
            }
        }
        $version = get_file_version( $src );
        $deps->registered[ $handle ]->ver = $version;
        return add_query_arg( 'ver', $version, $src );
    }
    add_filter( 'script_loader_src', __NAMESPACE__ . '\version_script', 10, 2 );
    function version_script( $src, $handle ) {
        global $wp_scripts;
        return version_asset( $src, $handle, $wp_scripts );
    }
    add_filter( 'style_loader_src', __NAMESPACE__ . '\version_style', 10, 2 );
    function version_style( $src, $handle ) {
        global $wp_styles;
        return version_asset( $src, $handle, $wp_styles );
    }
    function get_file_version( $url ) {
        $content_url = content_url();
        $filepath    = str_replace( $content_url, WP_CONTENT_DIR, $url );
        $filepath    = explode( '?', $filepath );
        $filepath    = array_shift( $filepath );
        if ( ! file_exists( $filepath ) ) {
            return;
        }
        try {
            $timestamp = filemtime( $filepath );
        } catch ( \Exception $e ) {
            return;
        }
        return $timestamp ? (string) $timestamp : null;
    }
    

    【讨论】:

      猜你喜欢
      • 2021-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-12
      • 1970-01-01
      相关资源
      最近更新 更多