WordPress Polylang Filter nicht übersetzte Artikel anzeigen!

WordPress Polylang Filter nicht übersetzte Artikel anzeigen!

Inhaltsverzeichnis

Wie man Beiträge ohne Übersetzung im WordPress-Admin filtert

In diesem Artikel zeige ich dir, wie du Beiträge im WordPress-Admin-Bereich filtern kannst, um nur diejenigen anzuzeigen, die noch keine Übersetzung haben. Diese Anleitung führt dich durch die Schritte, um ein Dropdown-Menü hinzuzufügen, das es dir ermöglicht, zwischen allen Beiträgen und denjenigen ohne Übersetzung zu wählen.

Schritt 1: Hinzufügen des Dropdown-Menüs

Öffne die functions.php-Datei deines WordPress-Themes und füge den folgenden Code am Ende der Datei ein:

				
					function add_filter_dropdown() {
    global $pagenow, $typenow;

    // Nur auf der Beitragsseite im Admin-Bereich anzeigen
    if ($pagenow == 'edit.php' && $typenow == 'post') {
        ?>
        <select name="translation_filter" id="translation_filter">
            <option value="all" <?php selected(isset($_GET['translation_filter']) && $_GET['translation_filter'] == 'all'); ?>><?php _e('Alle Beiträge', 'textdomain'); ?></option>
            <option value="no_translation" <?php selected(isset($_GET['translation_filter']) && $_GET['translation_filter'] == 'no_translation'); ?>><?php _e('Beiträge ohne Übersetzung', 'textdomain'); ?></option>
        </select>
        <script>
            // JavaScript, um die Auswahl des Dropdown-Menüs zu überwachen und die Seite neu zu laden, wenn die Auswahl geändert wird
            document.getElementById('translation_filter').addEventListener('change', function() {
                var value = this.value;
                var url = new URL(window.location.href);
                if (value === 'no_translation') {
                    url.searchParams.set('translation_filter', 'no_translation');
                } else {
                    url.searchParams.delete('translation_filter');
                }
                window.location.href = url.toString();
            });
        </script>
        <?php
    }
}
add_action('restrict_manage_posts', 'add_filter_dropdown');

				
			

Schritt 2: Filtern der Beiträge ohne Übersetzung

Füge den folgenden Code ebenfalls in deine functions.php-Datei ein, um die Beiträge ohne Übersetzung zu filtern:

				
					function filter_posts_without_english_translation($query) {
    global $pagenow, $wpdb;

    // Nur im Admin-Bereich und auf der Seite "Beiträge" und wenn der Filter aktiviert ist
    if (is_admin() && $pagenow == 'edit.php' && $query->is_main_query() && isset($_GET['translation_filter']) && $_GET['translation_filter'] == 'no_translation') {
        $sql = "
            SELECT p.*
            FROM wp_posts p
            LEFT JOIN (
                SELECT object_id
                FROM wp_term_relationships
                WHERE term_taxonomy_id IN (
                    SELECT term_taxonomy_id
                    FROM wp_term_taxonomy
                    WHERE taxonomy = 'post_translations'
                )
            ) AS translated_posts ON p.ID = translated_posts.object_id
            LEFT JOIN (
                SELECT object_id
                FROM wp_term_relationships
                WHERE term_taxonomy_id IN (
                    SELECT term_taxonomy_id
                    FROM wp_term_taxonomy
                    WHERE taxonomy = 'category'
                    AND term_id IN (
                        SELECT term_id
                        FROM wp_terms
                        WHERE name = 'en'
                    )
                )
            ) AS english_posts ON p.ID = english_posts.object_id
            WHERE p.post_type = 'post'
            AND p.post_status = 'publish'
            AND translated_posts.object_id IS NULL
            AND english_posts.object_id IS NULL
            ORDER BY p.ID DESC;
        ";

        // Ausführen der SQL-Abfrage
        $post_ids = $wpdb->get_col($sql);

        // Filter anwenden, um nur die in der SQL-Abfrage zurückgegebenen Artikel anzuzeigen
        $query->set('post__in', $post_ids);
    }
}
add_action('pre_get_posts', 'filter_posts_without_english_translation');
				
			

Speichere deine functions.php-Datei und aktualisiere die Beitragsseite im WordPress-Admin-Bereich. Du solltest jetzt ein Dropdown-Menü sehen, mit dem du zwischen allen Beiträgen und denjenigen ohne Übersetzung wählen kannst.

Das ist alles! Du hast erfolgreich gelernt, wie du Beiträge im WordPress-Admin-Bereich filtern kannst, um nur diejenigen anzuzeigen, die noch keine Übersetzung haben.

*In diesem Artikel sind Partner-Links enthalten. Durch einen Klick darauf gelangst du direkt zum Anbieter. Solltest du dich dort für einen Kauf entscheiden, erhalte ich ei­ne kleine Provision. Danke für deine Unterstützung! Angebote sind immer nur gültig zum Zeitpunkt der Veröffentlichung des Artikels. Preise können sich ändern. Bitte überprüfe den aktuellen Preis auf der Website des Links.
Broschi
Broschi
Moin ich bin Broschi und das hier ist mein Blog. Abonniere gerne auch meinen Youtube Kanal! Du findest mich auch auf Pinterest, Instagram und Twitter. Kennst du schon meinen Amazon Shop*?
Amazon Shop
Affiliate Link!
ebay Angebote
Affiliate Link
Broschis Blog Newsletter
NEWSLETTER ABONNIEREN!
Teile die Begeisterung: Erzähle deinen Freunden von diesem Artikel! Und lass uns deine Gedanken hören – hinterlasse mir jetzt deinen Kommentar!

Deine Gedanken sind gefragt! Hast Du Fragen oder Ideen für den Artikel, lass sie raus. Dein Kommentar öffnet die Tür zu lebhaften Diskussionen und bietet eine Plattform für den Austausch von Wissen und Hilfe unter den Lesern. Teile gerne auch mit, falls dir etwas gefehlt hat – wir sind gespannt auf deine Meinung!

Schreibe deinen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert