web-dev-qa-db-ja.com

登録されているすべてのwpテーマカスタマイザセクションを入手しますか?

登録されているカスタマイザセクションをすべて取得する方法はありますか?私はカスタムカスタマイザを作成しています。カスタムセクションを登録する他のプラグインやテーマをこのページに表示したくないです。

デフォルトのセクションをすべて削除することはできますが、どのプラグインまたはテーマがセクションを登録するのか予測できません。

$wp_customize->remove_section( 'title_tagline' );

デフォルトのtitle_taglineセクションを削除します。

print_r( $wp_customize );を実行すると、登録されているすべてのセクションを見ることができます。そのセクションをループして登録を解除するための配列を作成するだけですが、登録されたセクションの配列には保護されているためアクセスできません。

登録済みセクションを取得する方法は他にありますか?

4
EHerman

いくつかのコアファイルの内部を調べた後、私は実際にこれを解決することができました。

次の関数は、カスタマイザに登録されているすべてのセクションを取得し、それぞれをループしてそれらを完全に登録解除します。

あなたのカスタム登録セクションを削除しないように、これはあなた自身のカスタムセクションのいずれかを登録する前に走るべきです。

function eherman_remove_registered_customizer_sections() {
    // retrieve the sections array
    $registered_sections = $wp_customize->sections();
    // loop over and remove each section
    foreach( $registered_sections as $section ) {
       $wp_customize->remove_section( $section->id );
    }   
}

悪くない、全く。私たちがより強力なカスタマイザに近づくにつれて、それが他人を助けてくれることを願っています!

リソース:

2
EHerman

sectionsメソッドを試しましたか? $wp_customize->sections()を使うことができます。

例:

foreach ($wp_customize->sections() as $section_key => $section_object ) {
  echo $section_key . '<br />';
}
2
Nilambar