web-dev-qa-db-fra.com

Comment créer un shortcode pour imprimer des valeurs spécifiques stockées dans un post meta array?

j'ai des problèmes pour imprimer une valeur spécifique stockée dans un tableau post-méta dans une boucle WordPress créée par un constructeur de grille Visual Composer, via un shortcode (j'ai également essayé le générateur de grille Custom Field, mais je n'ai pas pu trouver aucun exemple). .

J'ai essayé d'ajouter ce shortcode dans functions.php:

function dmc_prezzo()
{
$postid = get_the_ID(); // get id from post in loop
$meta_data = get_post_meta($postid,'listing_options'); // select array
return $meta_data['price:value'] . ' ' . $meta_data['price:original']; // extract keys
}
add_shortcode('dmcprezzo', 'dmc_prezzo');  //usage [dmcprezzo]

J'ai ensuite ajouté le shortcode au champ de texte dans le modèle de grille VC , mais il n'affiche rien!

Voici le tableau méta de la publication cible, extrait d'une publication, à l'aide du plugin DPM:

    listing_options: s:349:"a:8:{s:5:"price";a:2:{s:5:"value";s:5:"17300";s:8:"original";s:5:"19800";}s:17:"custom_tax_inside";s:0:"";s:15:"custom_tax_page";s:0:"";s:8:"city_mpg";a:1:{s:5:"value";s:3:"5.7";}s:11:"highway_mpg";a:1:{s:5:"value";s:3:"4.6";}s:12:"custom_badge";s:7:"Venduta";s:5:"video";s:43:"https://www.youtube.com/watch?v=IBCOAumh6aI";s:10:"short_desc";s:0:"";}";

Je peux voir que la variable contenant le tableau s'appelle $listing_options mais je ne sais pas comment définir le code correctement.

Les valeurs qui m'intéressent sont le prix: valeur et prix: original trouvé au début du tableau:

s:349:"a:8:{s:5:"price";a:2:{s:5:"value";s:5:"17300";s:8:"original";s:5:"19800";}

Quelqu'un peut-il aider s'il vous plaît?

Voici la sortie de votre tableau, une fois non sérialisé:

Array
(
    [0] => Array
        (
            [price] => Array
                (
                    [value] => 17300
                    [original] => 19800
                )

            [custom_tax_inside] => 
            [custom_tax_page] => 
            [city_mpg] => Array
                (
                    [value] => 5.7
                )

            [highway_mpg] => Array
                (
                    [value] => 4.6
                )

            [custom_badge] => Venduta
            [video] => https://www.youtube.com/watch?v=IBCOAumh6aI
            [short_desc] => 
        )

)

Donc, pour accéder au prix, vous devez changer votre shortcode en ceci:

function dmc_prezzo() {
    $postid = get_the_ID(); // get id from post in loop
    $meta_data = get_post_meta($postid,'listing_options'); // select array
    return $meta_data['listing_options']['price']['value'] . ' ' . $meta_data['listing_options']['price']['original']; // extract keys
}
add_shortcode('dmcprezzo', 'dmc_prezzo');  //usage [dmcprezzo]

Ce serait mieux si vous avez posté toutes les données sérialisées, je ne sais pas si elles ne sont pas imbriquées.

0
Jack Johansson