- Status
- Behoben
- Typ
- Bug
- Gemeldet für
- WPML Multilingual CMS 3.3.6
- Behoben in
- 3.3.7
Übersicht über das Problem
Es funktioniert nicht, wp_get_archives zu verwenden und das Argument post_type anzugeben, um die Anzeige von Beiträgen für die Archivseite eines bestimmten benutzerdefinierten Beitragstyps zu filtern.
Bitte beachten Sie, dass dieses Problem mit der WordPress-Version 4.4 eingeführt wurde.
Beispiel:
Angenommen, Sie haben einen benutzerdefinierten Beitragstyp mit dem Slug „news“ und erstellen ein benutzerdefiniertes Archiv-Template für diesen benutzerdefinierten Beitragstyp in einem Theme (archive-news.php).
In dieser Datei können Sie den folgenden Code verwenden, um das Archiv darzustellen:
$my_archives=wp_get_archives(array( 'type'=>'alpha', 'show_post_count'=>true, 'limit'=>20, 'post_type'=>'news', 'format'=>'html' )); print_r($my_archives);
Derzeit funktioniert dieser Code nicht und es werden keine Beiträge angezeigt.
Problemumgehung
Bevor Sie einen der folgenden Schritte ausführen, machen Sie sich bitte bewusst, dass Sie die Dateien Ihrer Website bearbeiten und dass dies bei unsachgemäßer Durchführung dazu führen kann, dass Ihre Website nicht mehr funktioniert.
Es wird dringend empfohlen, dies zunächst in einer sicheren Umgebung zu testen oder zumindest ein vollständiges Backup Ihrer Website zu erstellen, bevor Sie fortfahren.
- Öffnen Sie die Datei
sitepress-multilingual-cms\sitepress.class.php - Gehen Sie zu Zeile 219
- Ersetzen Sie:
add_filter( 'getarchives_join', array( $this, 'getarchives_join' ) );
- Durch:
add_filter( 'getarchives_join', array( $this, 'getarchives_join' ), 10, 2 );
- Ersetzen Sie:
- Gehen Sie zu Zeile 3685
- Ersetzen Sie:
function getarchives_join( $join ) { return $join . " JOIN {$this->wpdb->prefix}icl_translations t ON t.element_id = {$this->wpdb->posts}.ID AND t.element_type='post_post'"; } - Durch:
function getarchives_join( $join, $args ) { $post_type = array_key_exists( 'post_type', $args ) ? $args['post_type'] : 'post'; $post_type = esc_sql( $post_type ); return $join . " JOIN {$this->wpdb->prefix}icl_translations t ON t.element_id = {$this->wpdb->posts}.ID AND t.element_type='post_" . $post_type . "'"; }
- Ersetzen Sie: