web-dev-qa-db-fra.com

Comment obtenir la valeur d'entrée du plug-in "Widget Logic" dans un code de widget personnalisé (à afficher sur la page d'administration du widget)

J'ai le plugin "Widget Logic" installé. J'ai créé mon propre widget appelé "Buzz". J'ai une barre latérale avec plusieurs instances de mon widget personnalisé "Buzz".

Désormais, sur la page d’administration des widgets, lorsque la barre latérale est ouverte et que tous les widgets de cette barre latérale sont fermés, vous pouvez voir un nom de widget et un titre d’instance de widget (le cas échéant).

Par exemple, si j'ai 2 instances de mon widget "Buzz" avec des titres différents, sur la page d'administration du widget, cela ressemble à quelque chose comme:

Buzz: Title 1
Buzz: Title 2

Ce que je voudrais faire est d'afficher la valeur "Logique du widget" spécifiée pour une instance de widget sous la ligne "nom du widget: titre de l'instance du widget" sur la page d'administration du widget. Donc, par exemple:

Buzz: Title 1
Displayed on: is_front_page()

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

J'espère que cela a du sens.

J'apprécierais vraiment si quelqu'un pouvait m'aider avec ceci: comment obtenir la valeur spécifiée dans la zone de saisie "Widget Logic" et l'afficher sous le titre de l'instance du widget sur la page d'administration du widget.

Merci beaucoup, Dasha

1
dashaluna

Je suis presque sûr qu'il n'y a aucun moyen de le faire (côté serveur) sans piratage des fichiers core, mais heureusement, je connais un peu de jQuery et j'ai mis au point cette fonction bidon qui fait très bien l'affaire:

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