web-dev-qa-db-ja.com

WPタイプのカスタムフィールドを投稿に表示する

WooCommerceのWebサイトで、WP-Typesプラグインを使用して製品にカスタムフィールドを追加しました。ウェブサイトは基本的にブログである「ニュース」というセクションを持っています。

WP-Typesプラグインで追加したカスタムフィールドを含めることで、欲しい商品をブログ投稿に挿入する方法を教えてください。

そのためのカスタムショートコードを作成することは可能ですか(商品IDとしてパラメータを受け入れ、カスタムフィールドのショートコードを含むショートコード)。あるいは、商品テンプレートコードのPHPコードを使用してフィールドの値を取得するというオプションがあるかもしれません。

1
Mindaugas

ご存知かもしれませんが、投稿メタデータが新しいテーブル$ wpdb-> postmetaに保存されている可能性があります。このテーブルには4つのフィールドがあります。

  • 'meta_id' - 各エントリの一意のID。
  • 'post_id' - このメタデータの投稿のID。
  • 'meta_key' - 'キー'の名前。
  • 'meta_value' - キーに関連付けられている値。

テーマでメタデータを使用するには、 get_post_meta() 関数を使用します。

get_post_meta($post_id, $key, $single);

その仕組みは次のとおりです。

  1. $ post_idは、メタ値が必要な投稿のIDです。 $ post-> IDを使用して$ post変数スコープ内の投稿のIDを取得します。 WordPressループ内の現在のアイテムのIDを取得するにはget_the_ID()を使用してください。
  2. $ keyは必要なメタ値の名前を含む文字列です。
  3. $ singleはtrueでもfalseでもかまいません。 trueに設定すると、関数は単一の結果を文字列として返します。 falseの場合、または設定されていない場合、関数はカスタムフィールドの配列を返します。

そしてそれをショートコードで使うには、これをあなたの子供のテーマfunctions.phpに追加してください。

function your_function_name( $atts ) {
    $a = shortcode_atts( array(
        'id' => get_the_ID(),
        'key' => '',
        'single' => 'true',
    ), $atts );

    return get_post_meta($a['id'], $a['key'], $a['single']);
}
add_shortcode( 'shortcode_text', 'your_function_name' );

上記の関数はこのショートコードを作成します:[shortcode_text id="" key="" single=""]

あなたがWordPressのループで現在のアイテムのIDを取得したいのであれば私が以前に言ったように私はデフォルト値をget_the_ID()に設定したのでid=""を完全に省きます。また、単一の値だけを取得したい場合は、デフォルトをtrueに設定し、single=""を省略することができます。

カスタムフィールド

ショートコードAPI

1
yobddigi