Kann ich mein eigenes Widget "Neueste Beiträge" erstellen oder das vorhandene anpassen?

14

Ich möchte das Widget "Letzte Beiträge" aktivieren und den Link "Alle anzeigen" anzeigen, wenn mehr Beiträge vorhanden sind, als das Widget derzeit anzeigen soll.

Ich möchte auch bestimmte Kategorien oder Posts davon ausschließen können.

Kann ich das auch über die functions.php meines Themas machen?

(1) Das vorhandene Widget anpassen oder (2) Eine Kopie davon erstellen, die ich anpassen kann?

N2Mystic
quelle
1
Zum weiteren Lesen ist die Widgets-API eine hilfreiche Ressource.
Manafire

Antworten:

20

In der Regel ist es am besten, die vorhandene zu kopieren, sie als einzigartig zu bezeichnen und dann Ihre eigenen Funktionen hinzuzufügen.

Kopieren Sie die WP_Widget_Recent_PostsKlasse aus der Datei wp-includes / class-wp-widget-recent-posts.php in die Datei functions.php (oder vorzugsweise in eine andere Datei in Ihrem Design, die nur Widgets gewidmet ist) und benennen Sie sie in eine andere Datei um, zMy_Widget_Recent_Posts

Fügen Sie dort Ihre Funktionalität hinzu.

Vergiss nicht, auch register_widget('My_Widget_Recent_Posts')als Teil der initPhase anzurufen .

Bendoh
quelle
+1 Süß. Ok, ich habe es zu einer speziellen benutzerdefinierten Widgets-Datei hinzugefügt, die ich über "require_once ()" in meiner functions.php "aufgenommen" habe. Obwohl ich den Klassennamen geändert habe, scheint er das standardmäßige WP Recent Posts-Widget zu übernehmen. Irgendwelche Ideen?
N2Mystic
2
Sie müssen dem Widget einen eindeutigen Namen zuweisen. parent::__construct('recent-posts', __('Recent Posts'), $widget_ops); 'recent-posts'sollte in etwas geändert werden 'my-recent-posts', und Sie sollten auch die Bezeichnung in etwas ändern, das das Widget als Ihr identifizierbar macht:'My Recent Posts'
Bendoh
3
Zu meinem Widget init musste ich hinzufügen add_action( 'widgets_init', create_function( '', 'register_widget( "My_Widget_Recent_Posts" );' ) );zu functions.php.
Manafire