it-swarm.com.de

So erhalten Sie den Eingabewert des Plugins "Widget Logic" in einem benutzerdefinierten Widget-Code (zur Anzeige auf der Widget-Verwaltungsseite)

Ich habe das Plugin "Widget Logic" installiert. Ich habe mein eigenes Widget namens "Buzz" erstellt. Ich habe eine Seitenleiste mit mehreren Instanzen meines benutzerdefinierten Widgets "Buzz".

Jetzt können Sie auf der Widgets-Verwaltungsseite, wenn eine Seitenleiste geöffnet ist und alle Widgets in dieser Seitenleiste geschlossen sind, einen Widget-Namen und einen Widget-Instanztitel (sofern einer angegeben ist) sehen.

Wenn ich zum Beispiel 2 Instanzen meines "Buzz" -Widgets mit unterschiedlichen Titeln habe, sieht es auf der Widget-Administrationsseite folgendermaßen aus:

Buzz: Title 1
Buzz: Title 2

Was ich tun möchte, ist, den für eine Widget-Instanz angegebenen Wert "Widget-Logik" unter der Zeile "Widget-Name: Widget-Instanz-Titel" auf der Widget-Verwaltungsseite anzuzeigen. Also zum Beispiel:

Buzz: Title 1
Displayed on: is_front_page()

Buzz: Title 2
Displayed on: is_page("page_slug")

Hoffe das macht Sinn.

Würde mich sehr freuen, wenn mir jemand dabei helfen könnte: wie man den im Eingabefeld "Widget Logic" angegebenen Wert erhält und ihn unter dem Widget-Instanztitel auf der Widget-Administrationsseite anzeigt.

Vielen Dank, Dasha

1
dashaluna

Ich bin mir fast sicher, dass es keine Möglichkeit gibt, dies (serverseitig) zu tun, ohne die Kerndateien zu hacken. Glücklicherweise kenne ich ein wenig jQuery und habe mir diese Hackish-Funktion ausgedacht, die den Job perfekt macht:

enter image description here

function widget_logic_hack(){ 
global $pagenow;
if ($pagenow == 'widgets.php'){
    ?>
    <script>
    function hack_logic(){
     jQuery('input[id$="widget_logic"]').each(function()
        {       
                if (jQuery(this).val().length === 0){}else{
                    var id = this.id;
                    var value = jQuery(this).val();
                    //alert(value);
                    id = id.replace('-widget_logic','');
                    var currenttitle = jQuery("[id$='"+ id +"']").find('h4').html();
                    if (currenttitle.indexOf('Displayed on:') !=-1 ){
                        var ncurrenttitle = currenttitle.substring(0,(currenttitle.indexOf('Displayed on:')));
                        //alert(ncurrenttitle);
                         jQuery("[id$='"+ id +"']").find('h4').html(ncurrenttitle + 'Displayed on: <span class="in-widget-title">' + value + '</span>');
                    }else{
                        jQuery("[id$='"+ id +"']").find('h4').html(currenttitle + '<br /> Displayed on: <span class="in-widget-title">' + value + '</span>');
                    }
                }
        });
    }
    jQuery(document).ready(function(){
        setTimeout("hack_logic()",500);
        jQuery('#savewidget').live('click', function() {
             setTimeout("hack_logic()",5500);
             return true;
        });
    });
    </script>
    <style>.widget .widget-top {height: 40px !important;}</style>
    <?php
}

}

add_action('admin_footer','widget_logic_hack');
2
Bainternet