web-dev-qa-db-fra.com

Tableau sérialisé, récupérez des publications spécifiques avec meta_key/meta_value [0] -> is_featured

J'ai enregistré une clé Postmeta dans la base de données: mediSHOP_product_extras Sa valeur est

Unserialized: Array ( [0] => Array ( [is_slider] => 0 [is_featured] => 0 [in_stock] => 0 [video_url] => [related_product_list] => ) )

Pour des raisons de simplicité, je ne souhaitais pas enregistrer chaque valeur en tant que nouvelle combinaison clé/valeur dans DB. Mais j'ai peut-être commis une erreur ...

Je veux utiliser get_posts pour récupérer les publications qui ont is_featured == 1. Je ne vois pas comment faire cela.

$slides_content = get_posts(array(
    'post_type'      => 'post',
    'posts_per_page' => 12,
    'meta_key'       => 'mediSHOP_product_extras',
    'meta_value'  => '1'
));

la méta-valeur doit être 1, mais elle doit aussi être is_featured == 1.

La solution la plus simple consisterait simplement à enregistrer is_featured en tant que clé distincte. Mais peut-être savez-vous comment résoudre mon problème?

2
user8842

Il est possible, si vous mettez en forme votre méta requête, de rechercher la chaîne sérialisée de cette façon, en supposant que votre valeur de tableau est toujours un entier:

$params = array(
    'meta_query' => array(
        array(
            'key'     => 'mediSHOP_product_extras',
            'value'   => 's:11:"is_featured";i:1;',
            'compare' => 'LIKE'
        )
    )
);
$query = new \WP_Query( $params );

Si la valeur du tableau est une chaîne ou un booléen, le modèle de valeur de la méta-requête doit être modifié:

// for string type values
's:11:"is_featured";s:1:"1";'

// for bool type values
's:11:"is_featured";b:1;'
1
David

Je pense que le code ci-dessous fonctionnera pour vous

$args = array(
   'post_type' => 'post',
   'meta_key' => 'mediSHOP_product_extras',
   'posts_per_page' => '12',
   'meta_query' => array(
       array(
           'key' => 'mediSHOP_product_extras',
           'value' => '1',
           'compare' => '=',
       )
   )
);
$query = new WP_Query($args);

if u face any problem let me know.
0
Arvind Pal