wordpress ottenere il valore meta tramite chiave meta

13 mar 2013, 17:57:26
Visualizzazioni: 37.2K
Voti: 4

Come ottenere il valore meta tramite chiave meta

Voglio ottenere il valore tramite la chiave meta. Questo è quello che ho provato finora:

   $args = array(
    'post_type' => 'post',
    'post_status' => 'publish',
    'posts_per_page' => -1,
    'meta_key' => 'picture_upload_1'
);
$dbResult = new WP_Query($args);

var_dump($dbResult);

ma non sto ricevendo il valore meta

6
Commenti

grazie, ma come menzionato nella domanda. ho bisogno di ottenere il valore meta dalla chiave meta. Non ho l'id del post!

meWantToLearn meWantToLearn
13 mar 2013 18:14:10

se non hai l'ID del post, come fai a sapere quale valore meta stai cercando se più post hanno quella chiave associata? cosa intendi fare con i valori meta?

Milo Milo
13 mar 2013 18:20:42

sto scrivendo un plugin, ha un custom post type e uno shortcode che accetta un parametro. Quando l'utente salva il custom post, memorizzo la chiave come slideshow_1, dove 1 sarà una chiave univoca casuale. Quando l'utente usa lo shortcode [images id=1], aggiungerò 1 a slideshow_ ed eseguirò una query per ottenere il suo meta value che contiene il percorso dell'immagine

meWantToLearn meWantToLearn
13 mar 2013 18:21:53

questo non risponde a nessuna delle mie domande.

Milo Milo
13 mar 2013 18:23:04

non ci saranno più post con la stessa chiave, la chiave sarà univoca

meWantToLearn meWantToLearn
13 mar 2013 18:24:59
Mostra i restanti 1 commenti
Tutte le risposte alla domanda 3
1

WP_Query seleziona i post e non i valori dei metadati, ecco perché non stai ottenendo il valore. Puoi utilizzare l'ID del post restituito per ottenere il valore in questo modo:

$args = array(
    'post_type' => 'post',
    'post_status' => 'publish',
    'posts_per_page' => 1,
    'meta_key' => 'picture_upload_1'
);
$dbResult = new WP_Query($args);
global $post;
if ($dbResult->have_posts()){
   $dbResult->the_post();
   $value = get_post_meta($post->ID,'picture_upload_1',true);
}

Questo codice recupererà il valore del metadato dell'ultimo post pubblicato che ha un campo personalizzato chiamato picture_upload_1

Un'altra cosa che puoi fare è creare una query personalizzata, ad esempio:

global $wpdb;
$value = $wpdb->get_var( $wpdb->prepare("SELECT meta_value FROM $wpdb->postmeta WHERE meta_key = %s LIMIT 1" , $meta_key) );
13 mar 2013 18:25:08
Commenti

questo è fantastico ma perché dobbiamo fare global $post e $dbResult->the_post(); e perché il post_content è vuoto quando usiamo la funzione $dbResult->get_posts();

mohsin mohsin
20 ott 2017 18:04:45
2

Ottieni tutti i valori di meta_key ovunque:

global $wpdb;
$meta_key = 'picture_upload_1';

$data = $wpdb->get_results($wpdb->prepare( "SELECT DISTINCT meta_value FROM $wpdb->postmeta WHERE meta_key = %s", $meta_key) , ARRAY_N  );

$result = [];
foreach($data as $array){
    $result[] = $array[0];
}

print_r($result);
14 ago 2020 19:38:46
Commenti

Perché stai eseguendo nuovamente un ciclo su quell'array?

fuxia fuxia
15 ago 2020 02:56:14

Perché l'array originale contiene array annidati (array multidimensionale)

Hisham Dalal Hisham Dalal
15 ago 2020 10:21:39
0

Hai considerato di memorizzare il valore nella tabella wp_options invece che in wp_postmetas?

In questo modo potresti usare get_option con la tua chiave personalizzata per impostare e recuperare il valore.

https://developer.wordpress.org/reference/functions/get_option/

14 ago 2020 19:53:08