2016-04-16 17 views
0

ich struggeling mit einer Herausforderung in meinem benutzerdefinierten Thema für Wordpress zu tun. Ich möchte in meinem Theme Customizer contentspezifische Steuerelemente verwenden. Ich weiß, es gibt Option "active_callback", aber das ist nicht ausreichend für meinen Zweck und ich lese 2 Dokumentationsartikel über Customizer und diese https://make.wordpress.org/core/2014/07/08/customizer-improvements-in-4-0/ Artikel, aber immer noch keine Ahnung, hier ist was ich erreichen möchte:Wordpress Customizer Inhalt spezifische Steuerelemente

Zum Beispiel Ich möchte Kontrollkästchen "Sidebar anzeigen" haben, aber dieses Kontrollkästchen sollte kontextbezogener sein. Zum Beispiel, wenn ich auf der Homepage sein wird, wird es nur eine Checkbox als "Show Sidebar default" sein, aber wenn ich in eine Post gehen, ich will es 3 Kontrollkästchen:

  1. "Show Sidebar default" - id = "show_sidebar"
  2. "Show Sidebar in Post-Archiv Seite" - id = "show_sidebar_archive_ {post_type}"
  3. "Show Sidebar für diesen Beitrag" - id = "show_sidebar_singular_ {post_id}"

So Wenn ich diese Art von spezifischen IDs für die Kontrolle haben möchte, ist active_callback nicht genug, weil es nur anzeigen kann/Verstecken Kontrollen, ich kann nicht neu erstellen, wenn sich die URL in iframe ändert.

Es könnte 2 Lösungen geben: 1. Besser - wenn ich irgendwie Kontrollen durch Kontext erstellen/entfernen konnte, wäre es die beste Lösung. Wenn es irgendwie möglich ist, mit Customizer-API, geben Sie mir bitte einen Tipp 2. Nicht gut, aber ausreichend - ist zumindest irgendwie möglich ganze /wp-admin/customize.php?url= mit neu geklickt URL aktualisieren? dies könnte für eine Weile genug sein

thx für irgendwelche Ratschläge!

Antwort

0

Ok, ich habe diese zweite Lösung gefunden, hier ist Code. Es ist genug für mich für jetzt.

'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 
Verwandte Themen