X

Beitrags- & Seitenfilterung nach benutzerdefinierten Feldern im WordPress-Dashboard

Schnipsel von IsItWP

Möchten Sie Ihre Beiträge nach benutzerdefinierten Feldern im WordPress-Admin filtern? Dieser Code-Schnipsel fügt Ihren Beitrags- und Seitenlisten in WordPress ein neues Dropdown-Menü für benutzerdefinierte Felder hinzu. Das Menü zeigt eine Liste aller benutzerdefinierten Felder an. Um die Beiträge und Seiten zu filtern, müssen Sie nur das Feld auswählen, nach dem Sie filtern möchten.

Auswahlmenü zum Filtern nach benutzerdefiniertem Feld hinzufügen Admin

Anweisungen:

Sie müssen diesen Code nur zur functions.php-Datei Ihres Themes oder in ein websitespezifisches Plugin einfügen:

add_filter( 'parse_query', 'ba_admin_posts_filter' );
add_action( 'restrict_manage_posts', 'ba_admin_posts_filter_restrict_manage_posts' );

function ba_admin_posts_filter( $query )
{
    global $pagenow;
    if ( is_admin() && $pagenow=='edit.php' && isset($_GET['ADMIN_FILTER_FIELD_NAME']) && $_GET['ADMIN_FILTER_FIELD_NAME'] != '') {
        $query->query_vars['meta_key'] = $_GET['ADMIN_FILTER_FIELD_NAME'];
    if (isset($_GET['ADMIN_FILTER_FIELD_VALUE']) && $_GET['ADMIN_FILTER_FIELD_VALUE'] != '')
        $query->query_vars['meta_value'] = $_GET['ADMIN_FILTER_FIELD_VALUE'];
    }
}

function ba_admin_posts_filter_restrict_manage_posts()
{
    global $wpdb;
    $sql = 'SELECT DISTINCT meta_key FROM '.$wpdb->postmeta.' ORDER BY 1';
    $fields = $wpdb->get_results($sql, ARRAY_N);
?>
<select name="ADMIN_FILTER_FIELD_NAME">
<option value=""><?php _e('Filter By Custom Fields', 'baapf'); ?></option>
<?php
    $current = isset($_GET['ADMIN_FILTER_FIELD_NAME'])? $_GET['ADMIN_FILTER_FIELD_NAME']:'';
    $current_v = isset($_GET['ADMIN_FILTER_FIELD_VALUE'])? $_GET['ADMIN_FILTER_FIELD_VALUE']:'';
    foreach ($fields as $field) {
        if (substr($field[0],0,1) != "_"){
        printf
            (
                '<option value="%s"%s>%s</option>',
                $field[0],
                $field[0] == $current? ' selected="selected"':'',
                $field[0]
            );
        }
    }
?>
</select> <?php _e('Value:', 'baapf'); ?><input type="TEXT" name="ADMIN_FILTER_FIELD_VALUE" value="<?php echo $current_v; ?>" />
<?php
}

Hinweis: Wenn Sie zum ersten Mal Code-Schnipsel in WordPress hinzuf ilde{A}gen, lesen Sie bitte unseren Leitfaden, wie Sie Code-Schnipsel richtig in WordPress kopieren / einf ilde{A}gen, damit Sie Ihre Website nicht versehentlich besch ilde{A}digen.

Wenn Ihnen dieses Code-Snippet gefallen hat, ziehen Sie bitte in Betracht, unsere anderen Artikel auf der Website zu lesen, wie z. B.: 62 beste kostenlose WordPress-Blog-Themes oder 7 beste WordPress-Kontaktformular-Plugins.

Kommentare   Hinterlasse eine Antwort

  1. Hallo, ist es möglich, dies nur für einen bestimmten Beitragstyp anzuzeigen? Danke

  2. Hallo, danke für den Code, aber leider funktioniert er bei mir nicht. Das Auswahl-Dropdown erscheint über der Beitragsliste und enthält die richtigen benutzerdefinierten Felder, aber wenn ich einen Wert eingebe, werden keine Ergebnisse angezeigt, obwohl eine Reihe von Beiträgen diesen Wert in diesem benutzerdefinierten Feld haben.

  3. Hallo, ich möchte dies für benutzerdefinierte Beiträge von Benutzern verwenden, wie muss sich der Code ändern, kann mir jemand helfen!!

  4. Funktioniert immer noch reibungslos. Danke, toller Schnipsel!

  5. Ausgezeichnet. Der Beitrag ist etwas alt, aber ich habe den Code gerade in meine Funktionen-Datei kopiert und eingefügt und er funktioniert perfekt. (OK, nicht „perfekt“ in Bezug auf die Anzeige, aber das Anpassen ist mein Problem! Funktional scheint er genau richtig zu sein.) [WP 4.2.2] Ich wollte diese Funktionalität schon seit Ewigkeiten ... und sie zu finden war so einfach, sobald ich beschloss, etwas dagegen zu unternehmen. Vielen Dank EVERso! :)

  6. Salvatore Capolupo 3. Januar 2015 um 16:13 Uhr

    Ich habe nach so etwas gesucht. Nicht so einfach und nützlich. Danke :)

  7. Hallo zusammen, kann mir jemand helfen, eine benutzerdefinierte Funktion zu erstellen, um die Beitragsreihenfolge ohne Plugin zu sortieren? Ich möchte die Möglichkeit einbeziehen, die Beitragsreihenfolge wie bei Seiten zu sortieren...

    Ich habe etwas Code wie add_filter( ‘parse_query’, ‘my_custom_post_sort’ );

    aber ich weiß nicht, wie ich weitermachen soll...

  8. Hallo,

    Ich bin gerade auf Ihren Schnipsel zum Filtern benutzerdefinierter Felder gestoßen.

    Ist es möglich, auch Tags zu filtern? Haben Sie eine Idee, was ich ändern muss?

    Prost

  9. Hallo, das klingt wirklich sehr interessant…

    Aber leider ist es nicht genau das, was ich schon lange suche.

    Ich hasse wirklich die Suche in der Mediathek. Was nützt eine Suche, die nicht in der Lage ist, Anhänge weder nach (Teil-)Strings in FILENAMEN, noch nach ID, den Strings in ALT oder CAPTION, benutzerdefinierten Feldern, TAGS usw. zu finden? Jede CMS hat diese Standard-Suchfunktion, nur WP nicht. Sehr seltsam. Haben Sie eine Idee, wie man so etwas zur Mediathek „upload.php“ und „media-upload.php“ (Pop-up-Fenster zum Einfügen von Anhängen in Seite/Beitrag) hinzufügen kann?

    Ich fürchte, ich kann das nicht selbst machen, das übersteigt mein PHP-Wissen. Aber es scheint, als hätten Sie den Code startklar! Auf jeden Fall ist dieses Beispiel eine Inspiration für mich.
    :-))

    1. Wenn Sie Ihren Medien keine Informationen oder Schlüsselwörter hinzufügen, wie sollen Sie sie dann finden?
      Sicherlich ist die WP-Suche sehr begrenzt, aber für die Medien funktioniert sie gut, wenn Sie jedem Bild gute ALT-Tags hinzufügen 😉

      1. WARUM sollte man es zu Metadaten hinzufügen? Generell sind FILENAME, ID, Autor usw. – alle Informationen sind in der Datenbank vorhanden. Cleveres SQL kann die Daten zurückgeben. Ganz zu schweigen von den problematischen Sortierspalten ASC/DESC – ich meine die neuen Spalten, die über function.php hinzugefügt wurden (Dateigröße, ID usw.). Ich denke, das Problem ist offensichtlich.

  10. Toller Beitrag, danke!

  11. Das ist erstaunlich.
    Gibt es eine Möglichkeit, den Filter nur auf der Bearbeitungsseite eines benutzerdefinierten Beitragstyps anzuzeigen?

    Ich habe versucht, a 
    if (isset($_GET[‘post_type’]) && $_GET[‘post_type’] == ‘product’)
    in den Filter einzufügen, aber es scheint nicht zu funktionieren.

  12. Ausgezeichneter Beitrag, danke Kevin. Implementiere es jetzt auf meinen Websites!

    1. Cool, freut mich zu hören.

  13. Hallo Kevin! Schöner Snippet!
    Aber ich habe ein Problem damit… es ist mir nicht möglich, die Beitragsliste im Adminbereich nach mehreren Filtern zu filtern.
    Wenn ich nach meinem benutzerdefinierten Feld und der Kategorie filtere, dann… liefert es keine Ergebnisse (obwohl es welche gibt).

    Was kann da los sein?

    1. Ich bin sicher, dass mehrere Werte möglich wären, nur habe ich mich damit noch nicht beschäftigt. Ich werde genauer hinschauen und sehen, ob ich so etwas in einem zukünftigen Snippet machen kann.

  14. Ich habe gerade Ihren Code implementiert und er funktioniert hervorragend für den angegebenen Zweck. Mit Ihrem Code kann ich schnell sehen, welche Beiträge einen Eintrag für ein bestimmtes benutzerdefiniertes Feld haben. Ich hoffe jedoch, dass es eine Möglichkeit gibt, anzuzeigen, welche Beiträge keinen Eintrag für dasselbe benutzerdefinierte Feld haben, damit es für mich einfacher ist, zurückzugehen und den fehlenden Eintrag hinzuzufügen, anstatt jeden Beitrag einzeln öffnen zu müssen, um zu sehen, ob er Daten in diesem bestimmten benutzerdefinierten Feld enthält.   Jeder Gedanke wird sehr geschätzt.   Danke!

    1. Nun, der beste Weg wäre, den Wert des benutzerdefinierten Feldes zur Admin-Beitragsliste hinzuzufügen. Sie könnten diesen Ausschnitt modifizieren, um so etwas zu tun.

      http://wpsnipp.com/index.php/functions-php/add-featured-thumbnail-to-admin-post-columns/

      1. Ich habe schließlich ein Plugin namens „Mass Custom Fields Manager“ gefunden, mit dem ich alle meine Beiträge identifizieren konnte, die nicht das gewünschte benutzerdefinierte Feld hatten, und das Feld automatisch mit einem von mir gewählten Wert hinzufügen konnte.   Ich konnte dann Ihre Funktionalität erfolgreich nutzen, um jetzt nach diesem neuen Wert zu filtern.   Funktioniert fantastisch.   Das hat mich davor bewahrt, fast 2.000 Beiträge manuell durchzugehen.   Danke!!

        1. Cool, ich freue mich zu hören, dass Sie die Dinge zum Laufen gebracht haben, 2000 Beiträge wären sicherlich viel, um sie von Hand zu aktualisieren. Kein Problem, ich bin froh, dass ich helfen konnte!

  15. Schöner Ausschnitt, danke.
    Ich werde ihn ändern, damit er für den Seitenbereich funktioniert.

    1. Ich freue mich zu hören, dass Ihnen der Ausschnitt gefällt. Wenn Sie Änderungen vornehmen, wäre es großartig für unsere Besucher, die Änderungen über unser Beitragsformular http://wpsnipp.com/index.php/contribute/ an wpsnipp.com zurückzusenden. Genießen Sie den Ausschnitt!

    2. Hallo Finalwebsites, haben Sie den Code geändert? Können Sie mir helfen?

      1. Hallo,
        Ja, ich habe es zum Laufen gebracht, versuchen Sie die Funktion auf dieser Seite:
        http://www.finalwebsites.com/blog/wordpress/add-a-parent-pages-filter-function-your-wordpress-admin-section/

        1. Danke für die Veröffentlichung des Ausschnitt-Updates,

        2. Danke! Aber der Link gibt mir Timeout!

  16. Kevin,

    Danke für den Ausschnitt. Er funktioniert perfekt. Ich bin neugierig, steht das „ba“ in ba_admin_posts_filter() für Blog-Admin?

    1. Der Funktionsname ba_admin_posts_filter() ist nur eine benutzerdefinierte Funktion, er könnte eigentlich alles sein. In diesem Fall hat der Autor des Ausschnitts jedoch einen Teil seines Domainnamens, en.bainternet.info, als ba_ aufgenommen.

      1. Kevin, hier ist ein Ausschnitt, den ich geschrieben habe, damit der Filter „%“ und „_“ Wildcards haben kann, falls jemand so etwas möchte:

        function ba_admin_where_filter($where){    if (strpos($where, ‘meta_value’) !== FALSE) { $where = preg_replace(‘/(.meta_value[^=]*)=(.*)$/U’, “$1 LIKE $2″, $where);  } return $where;}add_filter( ‘posts_where_request’, ‘ba_admin_where_filter’ );FYI, wenn Sie 0 als Filter angeben, werden alle Beiträge zurückgegeben. Dies gilt auch für Ihren ursprünglichen Code. Ich dachte, es läge daran, dass$_GET[‘ADMIN_FILTER_FIELD_VALUE’] != ”

        ergibt false, also habe ich versucht 
        strval($_GET[‘ADMIN_FILTER_FIELD_VALUE’]) != ”

        aber es wurden immer noch alle Beiträge zurückgegeben. Na ja.

        1. Kevin, gibt es eine Möglichkeit, die versteckten Felder auch anzuzeigen (d. h. die, die mit Unterstrich beginnen)? Danke.

  17. Gibt es eine Möglichkeit, eine Frontend-Suche basierend auf benutzerdefinierten Feldern oder benutzerdefinierten Taxonomien zu erstellen?

    1. Nun, dieser spezielle Ausschnitt ist für die Admin-Filterung, Sie könnten die Möglichkeit hinzufügen, dass WordPress auch benutzerdefinierte Felder durchsucht. Mit allem, was gesagt wurde, würde ich mir jedoch das Plugin search everything ansehen.  http://wordpress.org/extend/plugins/search-everything/

      1. Ja, das und andere habe ich gesehen. Ich habe mich nur gefragt, ob Sie etwas anderes/besseres hatten – insbesondere auf der Suche nach einer Möglichkeit, die Suchoptionen zu synchronisieren.
        Zum Beispiel: Wenn Stadt = Tulsa, dann grenzen Sie den Bundesstaat auf nur 1 Option = Oklahoma ein. Oder wenn Sie zuerst Oklahoma wählen, dann ändern Sie die Städte-Dropdownliste, um nur Städte in Oklahoma anzuzeigen… Dann drücken Sie „Suchen“.

        Nochmal danke.

        1. Nichts, was ich bisher gepostet habe, aber Sie können die Kategorieauswahl zur Suche hinzufügen. Ich benutze diese Option in der Suchbox auf wpsnipp.com, könnte Städte als Kategorien einrichten.

          http://wpsnipp.com/index.php/cat/search-category-with-dropdown/

Kommentar hinzufügen

Wir freuen uns, dass Sie einen Kommentar hinterlassen haben. Bitte beachten Sie, dass alle Kommentare gemäß unserer Datenschutzrichtlinie moderiert werden und alle Links nofollow sind. Verwenden Sie KEINE Schlüsselwörter im Namensfeld. Lassen Sie uns ein persönliches und bedeutungsvolles Gespräch führen.

WordPress Launch Checkliste

Die ultimative Checkliste für den Start von WordPress

Wir haben alle wichtigen Checklistenpunkte für den Start Ihrer nächsten WordPress-Website in einem praktischen E-Book zusammengefasst.
Ja, senden Sie mir das kostenlose E-Book!