2016-04-16 3 views
0

Я борюсь с одним вызовом, чтобы сделать в моей пользовательской теме для Wordpress. Я хочу иметь элементы управления, специфичные для контента, в My Theme Customizer. Я знаю, что есть опция «active_callback», но этого недостаточно для моей цели, и я читаю две статьи документации о customizer и этой статье https://make.wordpress.org/core/2014/07/08/customizer-improvements-in-4-0/, но до сих пор не знаю, вот чего я хочу достичь:Элементы управления контентом Wordpress Customizer

Например , я хочу установить флажок «показать боковую панель», но этот флажок должен быть более контекстуальным. Например, когда я буду на домашней странице, там будет только один флажок «Показывать боковую панель по умолчанию», но когда я пойду в какую-то должность, я хочу там 3 флажков:

  1. «Показать навигационные по умолчанию» - идентификатор = "show_sidebar"
  2. "Показать навигационный в пост архивной странице" - ид = "show_sidebar_archive_ {post_type}"
  3. "Показать навигационный на этот пост" - ид = "show_sidebar_singular_ {post_id}"

Так когда я хочу иметь такие специфические идентификаторы для управления, просто active_callback недостаточно, потому что он может просто показать/скрыть элементы управления, я не могу создать новое, если URL-адрес в iframe изменяется.

Могут быть 2 решения: 1. Лучше - когда я мог каким-то образом создать/удалить элементы управления по контексту, это было бы лучшим решением. Если это возможно с помощью API-интерфейса customizer, дайте мне подсказку, пожалуйста, 2. Нехорошо, но достаточно - по крайней мере, возможно как-то перезагрузить весь /wp-admin/customize.php?url= с помощью нового URL-адреса? этого может быть достаточно на некоторое время

thx для любых советов!

ответ

0

Хорошо, я понял, что второе решение, вот код. Достаточно для меня пока.

'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 
Смежные вопросы