Rechercher des publications par ID dans admin

10

Je recherche un moyen de rechercher des articles par ID, de préférence avec la prise en charge de types de messages personnalisés. J'espérais qu'il y aurait un plugin permettant cette fonctionnalité, mais je n'ai rien trouvé. Toutes les idées seraient grandement appréciées, merci.

pereyra
la source
Pouvez-vous expliquer ce que vous entendez par recherche par ID, chaque publication a un ID unique, comment cette recherche pourrait-elle produire plus qu'un seul résultat?
t31os
@ t31os Un seul résultat est ce que je veux :). Je fais référence à la possibilité de rechercher des messages par ID dans le backend d'administration. Si vous allez sur domain.com/wp-admin/edit.php, vous avez un champ de recherche en haut et vous pouvez facilement localiser un article en cherchant dans les titres des articles . Je dois pouvoir faire de même, mais en utilisant des identifiants. Dites, entrez '1343', appuyez sur 'rechercher', obtenez le post # 1343.
pereyra
comment ça marche pour la recherche frontend?
chrispo

Réponses:

13

Je ne suis pas sûr de comprendre pourquoi vous souhaitez interroger par ID, mais cela dit que c'est possible d'une manière hacky (j'aime cette méthode parce qu'elle est simple).

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;
}

Il vous suffit ensuite de rechercher à l'aide de la zone de recherche standard en utilisant un #préfixe (hachage) en face de l'ID numérique.

#123

..wurn retournera le poste avec un ID de 123.

Je suis sûr qu'il existe des itinéraires plus compliqués qui pourraient être empruntés pour le faire, mais je ne vois aucun problème avec cette approche, sauf si vous avez beaucoup de messages avec des titres commençant par un hachage (mais vous pouvez toujours échanger le hachage pour un autre personnage).

J'espère que ça t'as aidé. :)

t31os
la source
@ t310s cela fonctionne, merci beaucoup! le seul problème (bien que purement cosmétique) que j'obtienne est qu'en haut des résultats de recherche j'obtiens: Les résultats de recherche pour "" - tandis que les résultats de recherche pour "# 123" seraient idéaux. Sinon, c'est exactement ce dont j'avais besoin, merci encore.
pereyra
C'est un effet secondaire malheureux de la suppression des termes de recherche juste avant la requête, mais maintenant j'ai jeté un œil à edit.php je peux voir une solution facile ... :) Mettez à jour l' unset()appel à ce qui suit .. unset( $wp->query_vars['s'], $_GET['s'] );et la recherche le texte du terme disparaîtra lors de la recherche d'ID .. ps heureux de vous aider .. :)
t31os
Très tard dans la journée, mais je suis tombé sur ce post et il est possible de re-remplir les résultats de recherche pour ... en se connectant au get_search_queryfiltre. add_filter( 'get_search_query', function() { return $_GET['s']; } );
Mike