Cerca post per ID in admin


10

Sto cercando un modo per cercare tra i post per ID, preferibilmente con supporto per tipi di post personalizzati. Speravo che ci fosse un plugin che abilitasse questa funzionalità, ma non sono riuscito a trovare nulla. Qualsiasi idea sarebbe molto apprezzata, grazie.


Puoi spiegare cosa intendi per ricerca per ID, ogni post ha un ID univoco, come può questa ricerca produrre più di un singolo risultato?
t31os,

@ t31os Un singolo risultato è quello che voglio :). Mi riferisco alla possibilità di cercare post per ID nel back-end dell'amministratore. Se vai su domain.com/wp-admin/edit.php hai un campo di ricerca in alto e puoi facilmente localizzare un post cercando tra i titoli dei post. Devo essere in grado di fare lo stesso, ma utilizzando gli ID. Dì, inserisci '1343', premi 'cerca', ottieni il post # 1343.
Pereyra,

come funziona per la ricerca di frontend?
chrispo,

Risposte:


13

Non sono sicuro di capire perché vorresti fare una query per ID, ma ciò ha detto che è possibile in un modo bizzarro (mi piace questo metodo perché è semplice).

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

Tutto ciò che devi fare è cercare utilizzando la normale casella di ricerca utilizzando un #prefisso (hash) davanti all'ID numerico.

#123

.. restituirebbe il post con un ID di 123.

Sono sicuro che ci sono percorsi più complicati che potrebbero essere presi per fare questo, ma non vedo alcun problema con questo approccio, a meno che tu non abbia molti post con titoli che iniziano con un hash (ma puoi sempre scambiare l'hash con un altro personaggio).

Spero che aiuti. :)


@ t310s funziona, grazie mille! l'unico problema (anche se puramente estetico) che ottengo è che nella parte superiore dei risultati della ricerca che sto ricevendo: Risultati della ricerca per "" - mentre i risultati della ricerca per "# 123" sarebbe l'ideale. Altrimenti questo è esattamente ciò di cui avevo bisogno, grazie ancora.
Pereyra,

Questo è uno sfortunato effetto collaterale di annullare i termini di ricerca appena prima della query, ma ora ho dato un'altra occhiata a edit.php posso vedere una soluzione semplice ... :) Aggiorna la unset()chiamata al seguente .. unset( $wp->query_vars['s'], $_GET['s'] );e la ricerca il testo a termine scompare quando si esegue la ricerca ID .. ps felice di aiutare .. :)
t31os,

Molto tardi, ma mi sono imbattuto in questo post ed è possibile ripopolare i risultati della ricerca per ... agganciandosi al get_search_queryfiltro. add_filter( 'get_search_query', function() { return $_GET['s']; } );
Mike
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.