2016-04-16 7 views
0

私はWordpressの私のカスタムテーマでやっている1つの挑戦で苦労しています。テーマカスタマイズツールでコンテンツ固有のコントロールを使用したい私はオプション "active_callback"があることを知っていますが、これは私の目的には十分ではありません。私はカスタマイザとこのhttps://make.wordpress.org/core/2014/07/08/customizer-improvements-in-4-0/に関する2つのドキュメントを読んでいますが、まだ手がかりがありません。 、私は "サイドバーを表示"チェックボックスを持っているが、このチェックボックスはより文脈的な仕様にする必要があります。たとえば、私がホームページ上になるとき、「表示サイドバーのデフォルト」として一つだけのチェックボックスがあるでしょうが、私はいくつかのポストに行くとき、私はそこに3つのチェックボックスたい:Wordpressカスタマイザのコンテンツ固有のコントロール

  1. 「を表示するサイドバーのデフォルト」 - IDを= "show_sidebar"
  2. "ポストアーカイブページに表示するサイドバー" - ID = "show_sidebar_archive_ {post_type}"
  3. "この投稿を表示:サイドバー" - ID = "show_sidebar_singular_ {post_idの}"

ので、私はこの種のIDを制御したいと思っています。ちょうどactive_callbackが十分ではなく、コントロールを非表示にすると、iframe内のURLが変更されたときに新しいものを作成できません。

2つの解決策があります。 1.私は何らかの形でコントロールを作成/削除できるようになると、最適な解決策になります。もしそれが何らかの形でカスタマイザAPIで可能なら、私には何かヒントを教えてください 2.良くないですが、少なくとも十分に - どういうわけか新しいクリックされたURLで/wp-admin/customize.php?url=全体を再読み込みできますか?これはしばらくの間十分な可能性があります

thxアドバイスについては、

答えて

0

私はその2番目の解決策を見つけました。コードはここにあります。今は私にとっては十分です。

'use strict'; 

(function ($) { 

    /** 
    * This is important fix for Theme Customizer 
    * It will change whole customizer url, because we need to load 
    * all controls ahan for new url, because of hierarchical options 
    */ 
    if (/\/customize\.php$/.test(window.location.pathname)) { 
    wp.customize.bind('preview-ready', function() { 
     var body = $('body'); 
     body.off('click.preview'); 
     body.on('click.preview', 'a[href]', function(event) { 
     var link, isInternalJumpLink; 
     link = $(this); 
     isInternalJumpLink = ('#' === link.attr('href').substr(0, 1)); 
     event.preventDefault(); 

     if (isInternalJumpLink && '#' !== link.attr('href')) { 
      $(link.attr('href')).each(function() { 
      this.scrollIntoView(); 
      }); 
     } 

     /* 
     * Note the shift key is checked so shift+click on widgets or 
     * nav menu items can just result on focusing on the corresponding 
     * control instead of also navigating to the URL linked to. 
     */ 
     if (event.shiftKey || isInternalJumpLink) { 
      return; 
     } 
     //self.send('scroll', 0); 
     //self.send('url', link.prop('href')); 

     var newUrl = link.prop('href'); 
     var currentUrl = window.location.href; 

     var customizeUrl = currentUrl.substring(0, currentUrl.indexOf("?url=") + 5) + newUrl; 

     // Reload whole customizer for new url 
     window.parent.location.replace(customizeUrl); 
     }); 
    }); 
    } 
})(jQuery); 
//# sourceMappingURL=customizer.js.map 
関連する問題