Ankerlink an den Anfang der Seite
s03 1526
Generic filters
Filter by Kategorien

Der Beitrag, geschriebem am 13. Februar 2021, ist schon etwas älter und könnte womöglich nicht mehr aktuell sein

Konkreter Anlass war die Platzierung von Ads in Widgets eines Blogs, verbunden mit dem Erfordernis, diese DSGVO-gerecht zu machen, und erst nach dem Cookie Consent einzublenden. Doch auch beliebige andere Einstellungen die Einfluss auf den Output in bestehenden Widgets haben, sind mit Hilfe von drei Filtern und etwas Code anzuwenden.

Damit ist alles möglich – von der Gestaltung über das Ausblenden des Widget-Titels (ohne auf eine schlüssige Benennung im Dashboard verzichten zu müssen) bis hin zur Zeitsteuerung.

Das Beispiel behandelt der Übersicht halber nur eine Checkbox zum Ausblenden des Widget-Titels im Frontend

Das Formular

add_filter( 'in_widget_form', function ( $widget, $return, $instance ) {
	<p>
		<input type="checkbox" class="checkbox" name="<?php echo $widget->get_field_name('hide_title'); ?>" id="<?php echo $widget->get_field_name('hide_title'); ?>" <?php checked(isset($instance['hide_title']) ? $instance['hide_title'] : 0); ?> />
		<label for="<?php echo $widget->get_field_name('hide_title'); ?>"><?php echo __('Hide Widgettitle' ); ?></label>
	</p>			
<?php

}, 10, 3 );

Das Speichern

add_filter( 'widget_update_callback', function ( $instance, $new_instance ) {
	if ( !empty( $new_instance['hide_title'] ) ) {
		$instance['hide_title'] = 1;
	} else {
		unset( $instance['hide_title'] );
	}
    return $instance;
}, 10, 2 );

Die Wiedergabe

add_filter('widget_display_callback', function($instance, $widget, $args) {
	if ( !empty( $instance['hide_title'] ) ) {
		unset( $instance['title'] );
	}
	return $instance;
}, 10, 3);

Da es ja ursprünglich um DSGVO ging (im Zusammenspiel mit Borlabs Cookie), hier auch dieses Beispiel. Die Einstellung sollte nur für HTML-Widgets gelten. Im Textfeld wird der Name des Cookies eingegeben, dem zugestimmt werden muss. Ist das erfolgt, wird das Widget angezeigt, andernfalls nicht.


/**
 * Plugin Name: Cookie Consent Widgets Option
 */
if ( !class_exists('BorlabsCookie\Autoloader') ) return;

add_filter( 'in_widget_form', function ( $widget, $return, $instance ) {
	if ( 'custom_html' == $widget->id_base ) {
        $cookieId = isset( $instance['cookie_id'] ) ? $instance['cookie_id'] : '';
        ?>
            <p>
			<label for="<?php echo $widget->get_field_id('cookie_id'); ?>">
                    <?php _e( 'Cookie Consent' ); ?>
                </label>
                <input class="text" type="text" id="<?php esc_attr_e($widget->get_field_id('cookie_id')); ?>" name="<?php esc_attr_e($widget->get_field_name('cookie_id')); ?>" value="<?php echo esc_attr($cookieId) ?>" />

            </p>
	<?php }  
}, 10, 3 );


add_filter( 'widget_update_callback', function ( $instance, $new_instance ) {
    if ( !empty( $new_instance['cookie_id'] ) ) {
	$instance['cookie_id'] = $new_instance['cookie_id'];
    }
    return $instance;
}, 10, 2 );


add_filter('widget_display_callback', function($instance, $widget, $args) {
	if ( !empty( $instance['cookie_id'] ) ) {
		$cookieId = $instance['cookie_id'];
		if ( ! BorlabsCookieHelper()->gaveConsent( $cookieId ) ) return false; 
	}
	return $instance;
}, 10, 3);

Bitte das Kommentarfeld nicht für Supportanfragen nutzen; hier kann kein Support angeboten werden. Die Angabe von Name oder E-Mail-Adresse ist optional, ein Spitzname wäre trotzdem nett.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Hinweis: Name und E-Mail-Adresse (beides optional, da alle Kommentare moderiert werden) werden dauerhaft gespeichert. Über dieses Formular kann jeder Zeit die Löschung persönlicher Daten oder Kommentare angefordert werden; die Anfrage wird nicht veröffentlicht und nach der Bearbeitung gelöscht. IP-Adressen, die mit Kommentaren gespeichert werden, werden nach zwei Monaten automatisch gelöscht.

Ihre Nachricht wird möglicherweise zur Spam-Prüfung an OpenAI (USA) weitergeleitet. Weitere Informationen finden Sie in unserer Datenschutzerklärung.