web-dev-qa-db-ja.com

テーマカスタマイザ - ウィジェット領域を表示する場所を選択して、ユーザーがウィジェットを整理できるようにします。

私はテーマを作成していますが、ウィジェットとウィジェットエリアに問題があります。テーマカスタマイザを使用して、ユーザーにコンテンツ、色などを編集させます。

ウィジェットエリアの作り方を知っています。そのウィジェット領域をテーマカスタマイザの特定のセクションに追加できるようにする必要があります。たとえば、zerif-liteテーマ(下の図を参照)の下にはウィジェット領域があります。

フォーカスセクション - パネル

フォーカスセクションウィジェット - セクション

私のテーマでも同じことをしたいのですが、カスタマイザ内でウィジェット領域が表示される場所を選択できるようにします。

注:私はzerif-liteのコードを調べましたが、それでもどうしたのかわからないのです。

また、ウィジェットエリアを作成する方法ではなく、PanelsSectionsSettings、およびControlsを作成する方法も知っています。

enter image description here

2
Kaspar Lee

データ構造にアクセスしてパネルに別の値を割り当てるだけで、カスタマイザ内のセクションを移動できます。そのため、通常の方法で作成されたウィジェット領域がwpse210938_areaと呼ばれていて、それをパネルwpse210938_panelに移動したいとします。

add_action( 'customize_register', 'wpse210938_move_widget_area' );
function wpse210938_move_widget_area () {
  global $wp_customize;
  $wp_customize->get_section ('sidebar-widgets-wpse210938_area')->panel = 'wpse210938_panel';
  }

唯一の不利な点は、デバッグモードがオンになっている場合、おそらくWPが最後にウィジェットセクションをロードするため、それらが移動しているときにphp警告「空の値からデフォルトオブジェクトを作成する」を受け取るということです。まだ空です。

1
cjbj