Wie zeige ich mein WordPress-Widget programmgesteuert an?

Lesezeit: 3 Minuten

Benutzer-Avatar
mollig

Ich muss mein benutzerdefiniertes Widget programmgesteuert in einer WP-Seiten-basierten benutzerdefinierten Seitenvorlage anzeigen.

Das ist das Szenario:

Ich habe eine Seite basierend auf einer benutzerdefinierten Seitenvorlage mit dem Namen “Produkt” erstellt. Jetzt brauche ich in der Seitenleiste mein benutzerdefiniertes Widget. Ich brauche diese Seitenleiste, um sich völlig von anderen Seiten zu unterscheiden, deshalb möchte ich sie programmgesteuert anzeigen. Ich habe versucht zu verwenden das_widget() Funktion, aber ich denke, es funktioniert nur mit eingebauten Widgets und ich weiß auch nicht, wie ich Parameter übergeben soll, die mit der Funktion register_sidebar registriert sind, weil es sie anscheinend nicht standardmäßig verwendet.

Eigentlich habe ich das verwendet: the_widget(‘WP_Widget_Search’) um es zu testen und das Widget war da, aber es ignorierte die Themeneinstellungen, ich meine die Einstellungen in function.php :

register_sidebar( array(
    'name' => 'Sidebar',
    'before_widget' => '<div id="%1$s" class="widget %2$s">',
    'after_widget' => '</div></div>',
    'before_title' => '<h3>',
    'after_title' => '</h3><div class="padder">'
) );

Wie gesagt, ich weiß nicht, ob es mit benutzerdefinierten Widgets (erstellt in Plugins) funktioniert, weil ich nicht weiß, wie ich den Widget-Namen und die Parameter dort übergeben soll. Wie geht das?

Erstellen Sie mithilfe von dynamisch eine dynamische Instanz des Widgets the_widget()z.B:

<div id="xxx" class="widget-area" role="complementary">
    <div id="sidebar-dyn">
        <?php the_widget( 'WP_Widget_Recent_Posts' ); ?>
    </div>
</div>

Warum die Notwendigkeit, benutzerdefinierte Widgets programmatisch einzubinden. Ich meine, Sie können einfach eine weitere Seitenleiste erstellen, die nur auf Ihrer benutzerdefinierten Seitenvorlage “Produkt” angezeigt wird.

Da Sie dies für Ihre benutzerdefinierte Seite tun müssen, müssen Sie nicht einmal nach einer Bedingung suchen. Fügen Sie diesen Code einfach irgendwo in Ihre “prdouct”-Seitenvorlagendatei ein (wo Sie Ihre Seitenleiste anzeigen möchten).

<?php if (function_exists('dynamic_sidebar') && dynamic_sidebar('Product Sidebar')) ;?>

Ziehen Sie Ihr Widget einfach aus dem Admin-Bereich in diese Seitenleiste.

Wenn das Widget einen Shortcode hat, rufen Sie es folgendermaßen auf:

<?php echo do_shortcode( $content ) ?>

Ihre Frage ist mir nicht ganz klar, aber was ich sammle, ist, dass 1. Sie Ihr Widget registrieren müssen und 2. Sie es NUR auf der Produktseite anzeigen müssen.

Um sich zu registrieren, fügen Sie dies in die functions.php ein (möglicherweise haben Sie die erste Zeile bereits in Ihrer Funktionsdatei):

<?php
if ( function_exists('register_sidebar') )
register_sidebar(array(
'name'=> 'Product Sidebar',
'before_widget' => '<div id="%1$s" class="widget %2$s">',
'after_widget' => '</div></div>',
'before_title' => '<h3>',
'after_title' => '</h3><div class="padder">'
));
?>

Dies wäre der Code, der in sidebar.php eingefügt werden muss, um das obige nur auf der Seite namens “Produkt” anzuzeigen.

<?php if (is_page('Product')) ;?>
<?php if (function_exists('dynamic_sidebar') && dynamic_sidebar('Product Sidebar')) ;?>
<?php endif; ?>

1382630cookie-checkWie zeige ich mein WordPress-Widget programmgesteuert an?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy