web-dev-qa-db-ja.com

カスタマイザでソート可能セクションを作成する際の問題

Wordpressカスタマイザに3つのセクションがあるとしましょう。 admin_enqueue_scriptsアクションでjsファイルをエンキューしています(customize_controls_enqueue_scriptsでエンキューする必要がありますか?)。

私はget_option('section_names')を使用して配列を作成し、次にforeach loopを使用して3つのセクションを作成します。

jsファイルで私はjqueryのUIのsortable('serialize')を使用しているし、phpファイルにajaxを使用してセクションの新しい順序を送信します。そのphpファイルはupdate_option('option_name', $_POST['list_items'])を使ってデータベースを更新します。

そのため、セクション順の変更が行われるたびにデータベースが更新されます。しかし、私が欲しいのは、公開ボタンをクリックしたときに起こる恒久的な変更(データベースの変更)です。手順は何ですか?

以下は、カスタマイザでセクションを生成するために使用されている以下のコードです(kirkiツールキットが使用されています)。

$sortable_sections = get_option('sortable_sections');

foreach ($sortable_sections as $sortable_section) {
    Kirki::add_section( $sortable_section, array(
        'title'          => esc_attr__( strtoupper($sortable_section), 'airspace' ),
        'description'    => esc_attr__( 'Insert content about this section', 'airspace' ),
        'panel'          => 'frontpage_panel',
    ) );
}
1
seeker

カスタマイズ用の新しいフィールドを追加すると、WordPressは値の保存、取得、プレビューの方法を処理します。
その後、AJAX呼び出しで値を保存する必要はありません。

セクションの順番を保存する新しいフィールドを追加するだけです。次にJavaScriptを使用して、このフィールドの値を変更し、変更を送信するためにfield.trigger("change")を使用します。

このフィールドにカスタムクラスを使用することもできます。
https://developer.wordpress.org/themes/customize-api/customizer-objects/#core-custom-controls

1
mmm