web-dev-qa-db-fra.com

La commande de plusieurs valeurs de get_post_meta est-elle garantie?

Vous pouvez créer plusieurs lignes dans la table postmeta pour une publication avec la même clé, comme ceci:

add_post_meta( $post_id, "example_key", "value1" );
add_post_meta( $post_id, "example_key", "value2" );

Pour récupérer les valeurs, vous pouvez utiliser get_post_meta, qui retournera un tableau:

$rv = get_post_meta( $post_id, "example_key" );
// $rv is array( "value1", "value2" )

Le tableau résultant est-il garanti à être commandé? Dans quel ordre sont les valeurs? Alphabétique ou date insérée?

1
Flimm

Yes.

get_post_meta() utilise get_metadata() qui à son tour utilise update_meta_cache() pour récupérer les valeurs. Dans le code source nous voyons cette partie (le mien du commentaire)

// $id_column is 'meta_id'
$meta_list = $wpdb->get_results( "SELECT $column, meta_key, meta_value FROM $table WHERE $column IN ($id_list) ORDER BY $id_column ASC", ARRAY_A );

Les méta-valeurs seront donc classées par meta_id par ordre croissant. Cela signifie que, comme @Jacob Peattie l’a souligné dans les commentaires, ils serontclassés par la date à laquelle ils ont été ajoutés.

2
kero