Come filtrare l'elenco dei post (nella dashboard WP) utilizzando un campo personalizzato (funzionalità di ricerca)?
Nonostante abbia cercato molto su Google, non ho trovato la risposta a una domanda molto semplice:
Ho alcuni post con un campo personalizzato (ad esempio supplier_name). Vorrei poter cercare e filtrare i miei post in base a questo campo personalizzato. In altre parole, nell'elenco dei post nell'area amministrativa, vorrei avere una casella di ricerca (chiamata "Nome fornitore") dove posso digitare un valore (es. "IBM") e poi, cliccando su un pulsante di ricerca, ottenere tutti i post che hanno un campo personalizzato chiamato "supplier_name" e, se presente, il valore del campo personalizzato sia "IBM".
Come posso fare questo?

Ho sviluppato un plugin appositamente per questo e non ho mai avuto il tempo di pubblicarlo:
Utilizzo:
Nel menu a discesa troverai un elenco di tutti i campi personalizzati, quindi seleziona semplicemente il campo che vuoi filtrare e clicca su filtra. Se vuoi filtrare per un valore specifico di un campo personalizzato, seleziona il nome del campo, inserisci il valore desiderato e clicca su filtra.
<?php
/*
Plugin Name: Filtro Admin per Campi Personalizzati
Plugin URI: http://en.bainternet.info
Description: Filtra articoli o pagine nell'area amministrativa per campi personalizzati (post meta)
Version: 1.0
Author: Bainternet
Author URI: http://en.bainternet.info
*/
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('Filtra per Campi Personalizzati', '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('Valore:', 'baapf'); ?><input type="TEXT" name="ADMIN_FILTER_FIELD_VALUE" value="<?php echo $current_v; ?>" />
<?php
}

Perché non usare la funzione helper per la tua casella di selezione? Cioè, sostituisci $field[0] == $current? ' selected="selected"':'',
con selected( $field[0] == $current, true, false ),
... :)

C'è un modo per farlo funzionare nelle versioni più recenti di WordPress?

Ho una tabella personalizzata (Nome Tabella: ssl_transaction_cus) nel database che viene utilizzata per memorizzare le informazioni sulle donazioni. Ho recuperato tutti i dati da questa tabella in una 'pagina del menu admin' con una tabella (con tag Table). Vorrei poter filtrare questi dati in base al 'Nome Evento'.
Sto cercando di seguire questa risposta. Ma, ci sono codici per post personalizzati o post. Ma, non ho CPT per questi dati, solo dati personalizzati. Ci sto provando da molto tempo. Ma non riesco ad avere successo. Per favore dai un'occhiata https://wordpress.stackexchange.com/questions/408599/how-to-filter-with-dropdown-in-backend-for-custom-data
