web-dev-qa-db-fra.com

Obtenir des champs personnalisés à partir d'un type d'article personnalisé avec un shortcode

J'ai créé un type de message personnalisé: "produits". Dans ce type de message, il existe six champs personnalisés contenant des informations automatiquement importées de WP Toutes les importations.

Je voudrais récupérer les informations de ces 6 champs personnalisés en utilisant un shortcode. Idéalement, il serait possible de récupérer les informations en utilisant le slug de la poste, donc (le "code" étant le slug):

[product code="12345678"]

Ce qui précède doit rechercher le "produit" avec le slug 12345678, puis sortir les informations de ces six champs personnalisés.

Comment devrais-je aborder cela?

1
Wouter

Obtenez la valeur d'attribut dans shortcode et obtenez les valeurs de champs personnalisés:

function product_func($atts) {
    $post_id = $atts['code'];
    $key = "my_custom_field_key";//for 1 field, you can do this 6 times for the 6 values
    $custom_value = get_post_meta($post_id, $key, true);
    return $custom_value;
}

add_shortcode('product', 'product_func');

si vous voulez déboguer les valeurs du champ post-méta, utilisez ce code:

function product_func($atts) {
    $post_id = $atts['code'];
    //lets check if we are getting the att
    echo "<h1>THE ATT, SHOULD MATCH THE CODE YOU SEND</h1></br>";
    echo "<pre>";
    var_dump($post_id);
    echo "</pre>";
    //lets check if we are getting the att
    echo "</br><h1>WE MAKE SURE THE POST IS NOT NULL, MEANING IT SHOULD EXIST</h1></br>";
    $post = get_post( $post_id );
    echo "<pre>";
    var_dump($post);
    echo "</pre>";

    //lets check the meta values for the post
    echo "</br><h1>WE LIST ALL META VALUES TO CHECK THE KEY NAME OF THE CUSTOM FIELD WE WANT TO GET</h1></br>";
    $meta = get_post_meta( $post_id );
    echo "<pre>";
    var_dump($meta);
    echo "</pre>";

    $key = "my_custom_field_key";//for 1 field, you can do this 6 times for the 6 values
    $custom_value = get_post_meta($post_id, $key, true);
    return $custom_value;
}

add_shortcode('product', 'product_func');

il montre chaque valeur nécessaire pour obtenir le champ `personnalisé, devrait ressembler à ceci:

 enter image description here 

donc dans mon cas, la clé serait:

$key = "MY CUSTOM FIELD";
1
David Lee