ページにカスタムフィールドの値を表示する方法


17

「ソフトウェア」と呼ばれるカスタム投稿タイプがあり、その中に含まれるのは、字幕、価格、スクリーンショット、ダウンロードリンクなどのさまざまなカスタムフィールドです。これらのカスタムフィールドのいくつかでtinyMCE編集ウィンドウの使用を許可する関数を作成しました。これらのフィールドをページに表示しようとしましたが、成功しませんでした。

私が使用している方法はこれです:

<h1><?php the_title();?></h1>
<h3><?php echo get_post_meta(get_the_ID(), 'subtitle', TRUE); ?></h3>

ここにページへのリンクがあります。

<hr/>ページの下には、作成されたすべてのメタのリストがあります。表示されるフィールドの1つは、何らかの奇妙な理由で「価格」です。

誰も私が何が欠けているのか考えていますか?


それは確かにget_post_meta()関数であり、ループ内で呼び出している場合は機能するはずです...正しいカスタムフィールド名を使用していない場合を除きます。メタボックスなどのプラグインを介して実装されている場合、多くの場合、プレフィックスが付いています。カスタムフィールドを宣言する方法をコードを投稿できますか?解決策は、PhpMyAdminでwp_postmetaテーブルを開き、meta_keyLIKE%...%の列を検索し、meta_key値として「subtitle」を指定することです。Wordpressがカスタムフィールドを保存している名前が正確に表示されます。
ピクセリン

私は、これは古いですけど、私はphpmyadminの中のすべてのメタフィールドのリストを取得するには、このSQLを使用します。m.meta_key BY wp_postmetaメートルのグループからSELECT m.meta_key
ssaltman

回答:


17

さて、あなたは使用しています:

get_post_meta(get_the_ID(), 'subtitle', TRUE);

したがって、あなたはWordpressに 'subtitle'フィールドのメタ値を取得し、返される値は文字列の形式であることを言っています。get_post_meta()docuを参照してください。

投稿のすべてのメタデータを取得するには、代わりにget_post_custom()関数を使用する必要があります。たとえば、ループ内にいる場合:

$custom = get_post_custom();
foreach($custom as $key => $value) {
     echo $key.': '.$value.'<br />';
}

これにより、投稿のすべてのメタデータが返されます。たとえば、「価格」メタフィールドを確認する場合:

if(isset($custom['price'])) {
    echo 'Price: '.$custom['price'][0];
}

最後のコードブロックが欠落しています))
超硬20

1
その表示されます$custom['price']あなたがする必要があるかもしれないので、戻り配列を$custom['price'][0]
WAL

3

このコードを使用して問題を解決してください。

$key_name = get_post_custom_values($key = 'Key Name');
echo $key_name[0];
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.