Ich möchte jedes in einer Seitenleiste vorhandene Widget abrufen, um es z. B. mit Posts innerhalb der Hauptschleife zu mischen.
Ich weiß, dass ich verschiedene Widget-Bereiche (Seitenleisten) verwenden kann, aber dieser Ansatz überfüllt die Widget-Verwaltungsseite mit einigen zehn Seitenleisten. Um dies zu mildern, dachte ich, sie einfach zu einer einzelnen Seitenleiste hinzuzufügen und sie bei Bedarf nacheinander abzurufen.
Aber ich stecke fest. Ich habe keine Ahnung, wie ich ein Widget separat abrufen kann.
Mein vorläufiger Ansatz besteht darin, wp_get_sidebars_widgets und the_widget zu verwenden, aber ich kann den Namen der Widget-Klasse nicht abrufen.
Hier ist ein vereinfachter Ausschnitt meines Codes. In diesem Fall versuche ich, alle drei Beiträge ein Widget hinzuzufügen, dies ist jedoch eine zu starke Vereinfachung der Logik (da ich sie nicht nur regelmäßig hinzufügen möchte), um Ihnen die Idee zu vermitteln. Ich möchte jedes Widget mit the_widget
oder einer anderen Funktion visualisieren . Wie kann ich das erreichen? Ist es möglich?
<?php
$i = 1;
$widgets = wp_get_sidebars_widgets(); // I KNOW THE USE OF THIS IS DISCOURAGED (PRIVATE) BUT CANNOT FIND ALTERNATIVES.
if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php
if ($i%3 == 0){
echo "<h1>WIDGET #".($i/3)."</h1>";
the_widget($widgets['homepage-1'][$i/3]); // THIS DOES NOT WORKS SINCE I'M NOT GIVING THE CLASS NAME. HOW TO RETRIEVE IT?
}
get_template_part( 'content', get_post_format() );
$i++;
?>
<?php endwhile; ?>
<?php _s_paging_nav(); ?>
<?php else : ?>
<?php get_template_part( 'content', 'none' ); ?>
<?php endif; ?>
dynamic_sidebar
Code sollte der naheliegendste Ansatz sein, und ich habe nicht daran gedacht! Jetzt fühle ich mich albern. +1 auch, um meine Frage (richtig) auf einen einzigen Satz zu reduzieren. Der Code enthält einige kleine Fehler, die jedoch trivial sind und die Richtigkeit der Antwort nicht ändern, da sie nur das falsche Widget ausgeben (sollte es sein$widgets[$i/3]
). Vielen Dank!Sie müssen es zum richtigen Zeitpunkt bekommen. Ich schlage vor am
wp
Action Hook.Lassen Sie uns dazu
widgets.php
in derdynamic_sidebar
Funktion Code stehlen :quelle