web-dev-qa-db-ja.com

ショートコードを使用してカスタム投稿タイプからカスタムフィールドを取得する

カスタム商品タイプ「products」を作成しました。この投稿タイプには、WP All Importから自動的にインポートされた情報を含む6つのカスタムフィールドがあります。

ショートコードを使用して、これら6つのカスタムフィールドから情報を取得したいと思います。理想的には、投稿のスラッグを使って情報を取得することが可能であるので、( "code"がスラッグである):

[product code="12345678"]

上記はスラッグ12345678で "product"を探し、次にそれら6つのカスタムフィールドから情報を出力します。

どのように私はこれに取り組むべきですか?

1
Wouter

shortcodeのAttribute値を取得し、カスタムフィールドの値を取得します。

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');

ポストメタフィールドの値をデバッグする場合は、次のコードを使用してください。

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');

これは `カスタムフィールドを取得するのに必要なそれぞれの値を示しています。次のようになります。

enter image description here 

だから私の場合キーは次のようになります。

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