it-swarm.com.de

Wie übergebe ich benutzerdefinierte Optionen vom Widget-Formular zum Widget-Update-Rückruf?

Ich habe dem Standard-Widget-Formular einige Kontrollkästchen-Optionen hinzugefügt. Ich bin jedoch nicht sicher, wie ich auf diese Optionszustände zugreifen und sie während des Widget-Speicherereignisses (widget_update_callback) weitergeben kann, damit sie von WP in der Datenbank gespeichert werden können.

Wie übergebe ich meine benutzerdefinierten Formularwerte an WP, um sie als Widgetoptionen für jedes Widget zu speichern?

In der ersten Funktion hänge ich meine Kontrollkästchenoptionen an alle Widgets-Kontrollfelder an ...

add_filter('in_widget_form', 'wse_widget_context_form');

function wse_widget_context_form(){

$checked = ' checked="checked"';
?>
<div class="wse_context">
    <ul>
        <li>Don't show this widget on: </li>
        <li><label><input value="on" type="checkbox" name="noHome" id="noHome"<?php if(isset($instance['noHome'])) echo $checked ?> />Home Page</label></li> 
        <li><label><input value="on" type="checkbox" name="noPosts" id="noPosts"<?php if(isset($instance['noPosts'])) echo $checked ?> /> Posts</label></li>
        <li><label><input value="on" type="checkbox" name="noPages" id="noPages"<?php if(isset($instance['noPages'])) echo $checked ?> /> Pages</label></li>
        <li><label><input value="on" type="checkbox" name="noCats" id="noCats"<?php if(isset($instance['noCats'])) echo $checked ?> /> Categories</label></li>
    </ul>
</div>

Rückruffunktion ist unten. $instance enthält nicht die benutzerdefinierten Formularwerte, sondern nur die Standardwerte für Widgets (Text und Inhalt). Wie hänge ich meine benutzerdefinierten Optionen an $instance an?

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

function wse_widget_context_callback($instance){
    echo 'instance: '.$instance.'<br/>'; // returns array but no custom form values

}
2
N2Mystic

Ich bin mir nicht sicher, ob Sie immer noch Probleme damit haben, aber für alle, die dies tun, ist hier die Lösung:

Fügen Sie wse_widget_context_form() die folgenden Argumente hinzu: $widget, $return und $instance

Verwenden Sie dann Folgendes, um Feld-IDs und Feldnamen abzurufen: <?php echo $widget->get_field_id('field_name'); ?> und <?php echo $widget->get_field_name('field_name'); ?>. z.B.

<li><label><input value="on" type="checkbox" name="<?php echo $widget->get_field_name('noHome'); ?>" id="<?php echo $widget->get_field_id('noHome'); ?>"<?php if(isset($instance['noHome'])) echo $checked ?> />Home Page</label></li>

Hoffentlich hilft das!

2
Hosh Sadiq

Ich denke, Sie haben mit der gleichen Funktionalität zu tun wie mit http://wordpress.org/extend/plugins/widget-context/

sie können überprüfen, wie der Code aufgebaut ist

Ich hoffe das gibt eine Idee und hilft

0
Gerald