it-swarm.com.de

Kontextbezogene Widgets. Meine Arbeiten sind im Gange

Ich arbeite an einer einfachen Ergänzung der Widget-Optionen, damit der Benutzer den "Kontext" festlegen kann, in dem Widgets angezeigt werden.

Folgendes habe ich bisher mit meinen Fragen in den Kommentaren ...

1) Hänge das Widget-Formular an alle Widgets an ...

add_filter('in_widget_form', 'wse_widget_context_form');

function wse_widget_context_form($widget){
//echo 'the widget id is: '.$widget->id;
//do we need to reference the widget->id to avoid variable overwrites on multiple widgets?
?>
<div class="wse_context">
    <ul>
        <li>Hide this widget on: </li>
        <li id='home'><label><input value="on" type="checkbox" name="noHome" id="noHome"<?php if(isset($noHome)) echo $noHome ?> /> home</label></li> 
        <li id='posts'><label><input value="on" type="checkbox" name="noPosts" id="noPosts"<?php if(isset($noPosts)) echo $noPosts ?> /> posts</label></li>
        <li id='pages'><label><input value="on" type="checkbox" name="noPages" id="noPages"<?php if(isset($noPages)) echo $noPages ?> /> pages</label></li>
        <li id='cats'><label><input value="on" type="checkbox" name="noCats" id="noCats"<?php if(isset($noCats)) echo $noCats ?> /> categories</label></li>
    </ul>
</div>

2) Erstellen Sie eine Rückruffunktion, die behandelt werden soll, wenn Widgets gespeichert werden.

<?php
add_filter('widget_update_callback', 'wse_widget_context_callback');

add_filter('widget_update_callback', 'wse_widget_context_callback');
function wse_widget_context_callback($instance, $new_instance, $old_instance){
    echo 'instance: '.$instance.'<br/>'; // returns array
    echo 'new_instance: '.$new_instance.'<br/>'; //returns ''
    echo 'old_instance: '.$old_instance.'<br/>'; //returns ''
}

3) Widget basierend auf den Widget-Einstellungen ein-/ausblenden

add_filter('widget_display_callback', 'wse_widget_display_callback');

function wse_widget_display_callback()
{
//how do I read the values and unset widgets as appopriate?

}
1
N2Mystic

Genau wie bei einer widget () -Methode:

function wse_widget_display_callback($instance)
{

   $show_it = true;
   if(isset($instance['noHome']) && $instance['noHome'] && is_home()) $show_it = false;
   if(isset($instance['noPages']) && $instance['noPages'] && is_page()) $show_it = false;
   ...

   if($show_it)
     return $instance;

   else
     return false;

}

Ich habe hier die Funktionen gepostet, die ich verwende, um dies zu erreichen, es könnte hilfreich sein. Die Form Hooks sind hier , aber sie sind Teil einer Klasse ...

4
onetrickpony