web-dev-qa-db-ja.com

カスタムウィジェットコードで「ウィジェットロジック」プラグインの入力値を取得する方法(ウィジェット管理ページに表示する)

"Widget Logic"プラグインをインストールしました。私は自分の "Buzz"というウィジェットを作りました。私は私のカスタムウィジェット "Buzz"の複数のインスタンスを持つサイドバーを持っています。

これで、サイドバーが開いて切り替えられ、そのサイドバー内のすべてのウィジェットが閉じられると、ウィジェット管理ページにウィジェット名とウィジェットインスタンスのタイトル(指定されている場合)が表示されます。

たとえば、タイトルが異なる「バズ」ウィジェットのインスタンスが2つある場合、ウィジェット管理ページでは次のようになります。

Buzz: Title 1
Buzz: Title 2

私がやりたいことは、ウィジェット管理ページの "widget name:widget instance title"行の下にウィジェットインスタンスに指定された "Widget Logic"値を表示することです。だから、例えば:

Buzz: Title 1
Displayed on: is_front_page()

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

それが理にかなっていることを願っています。

誰かがこれを手伝ってくれるなら本当にありがたいです: "Widget Logic"入力ボックスで指定された値を取得してWidget管理ページのウィジェットインスタンスタイトルの下に表示する方法。

ありがとう、ダーシャ

1
dashaluna

私はほとんど間違いなくコアファイルをハッキングせずにそれを行う方法(サーバー側)がないと確信しています。

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