0

ポートフォリオページ用のカスタム投稿タイプを作成しました。2 つのカスタム フィールドがあります。

  1. 商品URL
  2. ケーススタディの URL

私の問題は、テーマでこれらのカスタム フィールドの値を使用することです。現在、これを実行して値を取得します。

<?php 
$loop = new WP_Query(array('post_type' => 'portfolio', 'posts_per_page' => 3)); 
while ( $loop->have_posts() ) : $loop->the_post();

$custom = get_post_custom($post->ID);
$product_url = $custom['product_url'];
foreach ($product_url as $key => $value)
echo $key . " => " . $value . "<br />";

$custom = get_post_custom($post->ID);
$case_study_url = $custom['case_study_url'];
foreach ($case_study_url as $key => $value)
echo $key . " => " . $value . "<br />";

?>

// All my mark-up

<?php endwhile; ?>

私の用語がここで意味を成すかどうかはわかりませんが、product_url と case_study_url を表示するように foreach ループを実行する方法はありませんか?

よろしくお願いします。

心から。

4

1 に答える 1

3

2 つの値のみを取得する場合、get_post_custom を使用する理由はありません。代わりにGet Post Metaを使用することを検討してください。

<?php 
$loop = new WP_Query(array('post_type' => 'portfolio', 'posts_per_page' => 3)); 
while ( $loop->have_posts() ) : $loop->the_post();

$product_url = get_post_meta($post->ID, 'product_url', true);
$case_study_url = get_post_meta($post->ID, 'case_study_url', true);
echo "Product: $product_url, Case Study: $case_study_url";
?>

// All my mark-up

<?php endwhile; ?>

アップデート:

get_post_customテンプレートの構造に固有ではないメタフィールドを扱う場合は、より優れています。したがって、ユーザーが独自のフィールドを追加して、実際に自分でキーを指定せずにページに表示できるようにしたい場合は、次のようにすることができます。

<?php 
$loop = new WP_Query(array('post_type' => 'portfolio', 'posts_per_page' => 3)); 
while ( $loop->have_posts() ) : $loop->the_post();

$all_meta = get_post_custom($post->ID);
foreach($all_meta as $meta_key => $meta_value)
    echo "$meta_key: $meta_value<br/>";

endwhile;
?>

同じキーを使用する値を設定すると、結果は配列型になることに注意してください。

たとえば、「Foo」というカスタム フィールドがあり、それを「Bar」に設定したとします。次に、「Foo」という別のカスタム フィールドを作成し、それを「Baz」に設定します。これを行う場合:

<?php
$loop = new WP_Query(array('post_type' => 'portfolio', 'posts_per_page' => 3)); 
while ( $loop->have_posts() ) : $loop->the_post();
    $foo = get_post_meta($post->ID, 'Foo');
    print_r($foo);
endwhile;
?>

2 つの値が同じキーを使用するため、単純な文字列ではなく、一連の値を取得します。get_post_meta で 3 番目のパラメーターを「true」に設定することにより (上記の例に示されているように)、戻り値が文字列でなければならないことを指定しています。

ちょっといじってみると、私の言いたいことがわかるでしょう。お役に立てれば。

于 2012-09-24T17:24:10.990 に答える