web-dev-qa-db-ja.com

異なるページに複数のテーマカスタマイザを用意することは可能ですか?

たとえば、ブログ、フロントページ、その他のページがあるテーマがある場合は、複数のテーマカスタマイザを使用することができます。そのため、スタイルを編集するときにライブプレビューを表示できますか。

私のテーマはフロントページとブログがあります。ヘッダーとフッター以外に、ブログはテーマのタイプのためにフロントページからそれほどかかりません。ユーザーがテーマカスタマイザを使用してフロントページとブログページの両方を編集できるようにしたい場合、複数のカスタマイザを実行できますか。フロントページ用とブログ用の2つを使用できますか。これにより、ユーザーはテーマカスタマイザを使いやすくなり、ajaxのライブプレビューを見ることができます。私はこれがまだ行われているのを見たことがない。

私はこの状況での規範はバックエンドで追加のオプションページを提供するか、他のページのためにテーマカスタマイザにセクションを追加することになると思います(あなたがリアルタイムで変更を見ることができないとしても)

誰もが私にこの特定の状況についてのアドバイスをすることができますか?

5
user1632018

これは完全な解決策ではなく、コードもテストされていませんが、さまざまなページでカスタマイザを使用する方法の一般的な考え方を説明するのに十分なはずです。

// Add "Edit page with customizer" link to relevant pages
add_action('admin_bar_menu', function($bar) {
    if (is_home()) {
        $bar->add_node(array(
            'id' => 'some-id-1',
            'title' => 'Edit home page with customizer',
            'href' => admin_url( 'customize.php?url=/home'),
        ));
    }
    else {
        // Same as above, but change url=/home to some other page
        // and possibly add something like &customize-page-id=PAGE_ID
        // so that you can use the page id later.
    }
 });

 // Add customizer settings based on context passed from admin-bar
 add_action( 'customize_register', function() {
     if ($_GET['url'] == '/home') {
         // Add home page customizers
     }
     else {
         // Add other page customizer where setting names are based on
         // $_GET['customize-page-id'] so that to avoid conflicts
     }
 });
});
2
stianlik