Suche Beiträge nach ID in admin

10

Ich suche nach einer Möglichkeit, Beiträge nach ID zu durchsuchen, vorzugsweise mit Unterstützung für benutzerdefinierte Beitragstypen. Ich hatte gehofft, dass es ein Plugin geben würde, das diese Funktionalität aktiviert, aber ich habe nichts gefunden. Alle Ideen wäre sehr dankbar, danke.

Pereyra
quelle
Können Sie erklären, was Sie unter Suche nach ID verstehen? Jeder Beitrag hat eine eindeutige ID. Wie kann diese Suche möglicherweise mehr als ein einzelnes Ergebnis liefern?
t31os
@ t31os Ein einziges Ergebnis ist was ich will :). Ich beziehe mich auf die Möglichkeit, Beiträge nach ID im Admin-Backend zu suchen. Wenn Sie zu domain.com/wp-admin/edit.php gehen, befindet sich oben ein Suchfeld, und Sie können einen Beitrag leicht finden, indem Sie die Beitragstitel durchsuchen. Ich muss in der Lage sein, dasselbe zu tun, aber IDs zu verwenden. Sagen Sie, geben Sie '1343' ein, drücken Sie 'Suchen' und erhalten Sie Beitrag # 1343.
Pereyra
Wie funktioniert es bei der Frontend-Suche?
Chrispo

Antworten:

13

Ich bin mir nicht sicher, warum ich nach ID abfragen möchte, aber das besagt, dass es auf hackige Weise möglich ist (ich mag diese Methode, weil sie einfach ist).

add_action( 'parse_request', 'idsearch' );
function idsearch( $wp ) {
    global $pagenow;

    // If it's not the post listing return
    if( 'edit.php' != $pagenow )
        return;

    // If it's not a search return
    if( !isset( $wp->query_vars['s'] ) )
        return;

    // If it's a search but there's no prefix, return
    if( '#' != substr( $wp->query_vars['s'], 0, 1 ) )
        return;

    // Validate the numeric value
    $id = absint( substr( $wp->query_vars['s'], 1 ) );
    if( !$id )
        return; // Return if no ID, absint returns 0 for invalid values

    // If we reach here, all criteria is fulfilled, unset search and select by ID instead
    unset( $wp->query_vars['s'] );
    $wp->query_vars['p'] = $id;
}

Alles, was Sie dann tun, ist die Suche über das reguläre Suchfeld mit einem #(Hash-) Präfix vor der numerischen ID.

#123

..wurde die Post mit einer ID von 123 zurückgeben.

Ich bin mir sicher, dass es kompliziertere Wege gibt, um dies zu tun, aber ich sehe keine Probleme mit diesem Ansatz, es sei denn, Sie haben viele Posts mit Titeln, die mit einem Hash beginnen (aber Sie könnten den Hash immer gegen einen tauschen ein anderes Zeichen).

Ich hoffe, das hilft. :) :)

t31os
quelle
@ t310s das funktioniert, vielen Dank! Das einzige (wenn auch rein kosmetische) Problem, das ich bekomme, ist, dass ich oben in den Suchergebnissen Folgendes bekomme: Suchergebnisse für "" - während Suchergebnisse für "# 123" ideal wären. Ansonsten ist das genau das, was ich brauchte, nochmals vielen Dank.
Pereyra
Das ist ein unglücklicher Nebeneffekt beim Deaktivieren der Suchbegriffe kurz vor der Abfrage, aber jetzt habe ich einen weiteren Blick auf edit.php geworfen. Ich kann eine einfache Lösung sehen ... :) Aktualisieren Sie den unset()Aufruf auf Folgendes .. unset( $wp->query_vars['s'], $_GET['s'] );und die Suche Begriffstext wird verschwinden, wenn die ID-Suche durchgeführt wird .. ps gerne helfen .. :)
t31os
Sehr spät am Tag, aber ich bin über diesen Beitrag gestolpert und es ist möglich, die Suchergebnisse für ... erneut zu füllen, indem ich mich in den get_search_queryFilter einbinde . add_filter( 'get_search_query', function() { return $_GET['s']; } );
Mike