web-dev-qa-db-ja.com

いくつかの.css/.jsファイルからWordPressバージョンを削除する方法

私はすべての.css.jsファイルからバージョンを削除するために次の関数を使用できることを知っています:

add_filter( 'style_loader_src', 'sdt_remove_ver_css_js', 9999 );
add_filter( 'script_loader_src', 'sdt_remove_ver_css_js', 9999 );
function sdt_remove_ver_css_js( $src ) {
    if ( strpos( $src, 'ver=' ) )
        $src = remove_query_arg( 'ver', $src );
    return $src;
}

しかし、私はいくつかのファイル、例えばstyle.cssを持っています。その場合は、次の方法でバージョンを追加します。

function css_versioning() {
    wp_enqueue_style( 'style',
        get_stylesheet_directory_uri() . '/style.css' ,
        false,
        filemtime( get_stylesheet_directory() . '/style.css' ),
        'all' );
}

しかし、前の関数はこのバージョンも削除します。それでは、問題は2つをどのように連携させるかということです。

6

バージョンを削除する前に現在の handle を確認できます。

これが例です(未テスト)。

add_filter( 'style_loader_src',  'sdt_remove_ver_css_js', 9999, 2 );
add_filter( 'script_loader_src', 'sdt_remove_ver_css_js', 9999, 2 );

function sdt_remove_ver_css_js( $src, $handle ) 
{
    $handles_with_version = [ 'style' ]; // <-- Adjust to your needs!

    if ( strpos( $src, 'ver=' ) && ! in_array( $handle, $handles_with_version, true ) )
        $src = remove_query_arg( 'ver', $src );

    return $src;
}
7
birgire

この質問が書かれて以来、WordPressでは多くのことが変わりました。これはWordPressがバージョン番号を表示しないようにするための新しい方法です。

// remove version from head
remove_action('wp_head', 'wp_generator');

// remove version from rss
add_filter('the_generator', '__return_empty_string');

// remove version from scripts and styles
function remove_version_scripts_styles($src) {
    if (strpos($src, 'ver=')) {
        $src = remove_query_arg('ver', $src);
    }
    return $src;
}
add_filter('style_loader_src', 'remove_version_scripts_styles', 9999);
add_filter('script_loader_src', 'remove_version_scripts_styles', 9999);

編集は必要ありません。 functions.phpに追加して完了です。または単純なカスタムプラグインを介して追加します。選択はあなた次第です! :)

原著

0
Amr