Wenn du mit dem WordPress Elementor Pro arbeitest hast du die Möglichkeit deine Beiträge nach einem selbst definierten Filter auszulesen, in meinem Fall wollte ich weitere Beiträge aus der gleichen WordPress Kategorie auslesen und anzeigen!
Dazu musst du in der function.php folgende Funktion hinzufügen:
// Showing related posts by current post category in Posts Widget
add_action( 'elementor/query/jetztonline', function( $query ) {
// Get current post category
$current_post_id = get_queried_object_id();
$current_cat = get_the_category( $current_post_id );
if( empty( $current_cat ) ) {
return;
}
// Modify the query
$query->set( 'category__in', [ $current_cat[0]->term_id ] );
// Make sure we don't get current post
$not_in = $query->get( 'post__not_in' );
$not_in[] = $current_post_id;
// Modify the query
$query->set( 'post__not_in', $not_in );
} );
Oben bei add_action( ‘elementor/query/jetztonline‘ setzt du deinen Wunschnamen. Diesen Namen verwendest du dann auch in WordPress! So kannst du unterschiedliche Abfragen gestalten und anderweitig immer nutzen!
Elementor Pro Abfrage ID erstellen
Aus deiner Programmierung nimmst du nun dein Wunschwort, in meinem Fall “jetztonline” und schreibst es in das Widget in das Feld Abfrage ID hinein, fertig!
Jetzt werden die Beiträge aus der gleichen WordPress Kategorie angezeigt!
Erklärung zum Code
Dieser Code fügt verwandte Beiträge der aktuellen Beitrag-Kategorie im Posts-Widget in Elementor hinzu. Es handelt sich um eine benutzerdefinierte Action-Hook-Funktion, die an den Hook ‘elementor/query/jetztonline’ gebunden wird. Wenn also ein Posts-Widget im Elementor-Editor die Beiträge für eine Seite anfordert, wird diese Funktion ausgeführt, um die Abfrage zu ändern und verwandte Beiträge nach der aktuellen Beitrag-Kategorie zu filtern.
Hier ist eine schrittweise Erklärung des Codes:
1. `add_action(‘elementor/query/jetztonline’, function($query) { … } );`:
Dieser Teil registriert die Funktion als Aktion mit dem Hook ‘elementor/query/jetztonline’. Wenn das Elementor-Posts-Widget Beiträge abfragt, wird diese Funktion ausgeführt, um die Abfrage entsprechend zu ändern.
2. `$current_post_id = get_queried_object_id();`:
Hier wird die ID des aktuellen Beitrags abgerufen, der auf der Seite angezeigt wird. Die Funktion `get_queried_object_id()` gibt die ID des aktuellen Beitrags zurück.
3. `$current_cat = get_the_category( $current_post_id );`:
Mit dieser Zeile wird das Kategorie-Objekt (oder die Kategorien), denen der aktuelle Beitrag zugeordnet ist, abgerufen. Die Funktion `get_the_category()` gibt ein Array von Kategorie-Objekten zurück, denen der Beitrag zugeordnet ist.
4. `if( empty( $current_cat ) ) { return; }`:
Hier wird überprüft, ob der aktuelle Beitrag keiner Kategorie zugeordnet ist. Falls dies der Fall ist (z. B. wenn der Beitrag keine Kategorie hat), wird die Funktion beendet und keine weiteren Änderungen an der Abfrage vorgenommen.
5. `$query->set(‘category__in’, [ $current_cat[0]->term_id ]);`:
Mit dieser Zeile wird die Abfrage geändert, um nur Beiträge anzuzeigen, die zur ersten Kategorie des aktuellen Beitrags gehören. Der Parameter ‘category__in’ wird auf das Array der ID der Kategorie des aktuellen Beitrags gesetzt.
6. `$not_in = $query->get(‘post__not_in’); $not_in[] = $current_post_id;`:
Hier wird eine Liste von Beitrags-IDs erstellt, die in der Abfrage ausgeschlossen werden sollen. Zuerst wird die vorhandene Liste der auszuschließenden Beiträge mit `$query->get(‘post__not_in’)` abgerufen. Dann wird die ID des aktuellen Beitrags zur Liste hinzugefügt.
7. `$query->set(‘post__not_in’, $not_in);`:
Hier wird die Abfrage erneut geändert, um sicherzustellen, dass der aktuelle Beitrag nicht in den verwandten Beiträgen angezeigt wird. Der Parameter ‘post__not_in’ wird auf die Liste der auszuschließenden Beiträge gesetzt.
Durch diese Änderungen in der Abfrage werden also im Elementor-Posts-Widget nur Beiträge angezeigt, die zur gleichen Kategorie wie der aktuelle Beitrag gehören, und der aktuelle Beitrag selbst wird aus den verwandten Beiträgen ausgeschlossen. Dies hilft, eine sinnvolle und relevante Liste von verwandten Beiträgen basierend auf der aktuellen Beitrag-Kategorie zu erstellen.