web-dev-qa-db-ja.com

特定のページからCSSスタイルを削除する

子テーマでfunctions.phpを使用して、すべてのテーマ (子と親の両方) cssスタイルを単一のページから削除する必要があります。これが私が現在子供のfunctions.phpに追加しているものです。

// import parent and child theme css
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));}

// remove the parent & style css
function PREFIX_remove_scripts() {
wp_dequeue_style( 'parent-style' );
wp_dequeue_style( 'child-style' );
wp_dequeue_style( 'parent-style-css' );
wp_deregister_style( 'parent-style' );
wp_deregister_style( 'child-style' );
wp_deregister_style( 'parent-style-css' );

この PREFIX_remove_scripts 関数をサイト上の1ページだけに適用したい。どうすればこれを達成できますか。または別の適切な方法はありますか?事前に感謝します。

2
Ben Wright

コンディショナルタグ を使用して、スタイルを削除する必要のある特定のページをターゲットにすることができます。 is_page()を使用してpageページをターゲットにし(別の投稿タイプとは対照的に)、ページID、スラッグ、タイトル、または引数なしをtarget anyページに渡すことができます。

function wpse_217881_remove_scripts() {

    // Check for the page you want to target
    if ( is_page( 'About Me And Joe' ) ) {

        // Remove Styles
        wp_dequeue_style( 'parent-style' );
        wp_dequeue_style( 'child-style' );
        wp_dequeue_style( 'parent-style-css' );
        wp_deregister_style( 'parent-style' );
        wp_deregister_style( 'child-style' );
        wp_deregister_style( 'parent-style-css' );
    }
}

私はあなたがすでにいると仮定していますが、明示的に言うと、アクションフックからスタイルをデキュー/登録解除する関数を呼び出すべきです - この例ではwp_enqueue_scripts

wp_enqueue_scripts docs :から

その名前にもかかわらず、スクリプトとスタイルの両方をキューに入れるために使用されます。

add_action( 'wp_enqueue_scripts', 'wpse_217881_remove_scripts' );

// Optionaly add a priority if needed i.e:
// add_action( 'wp_enqueue_scripts', 'wpse_217881_remove_scripts', 20 );
4
Cai