こんにちは。
function get_post_meta_by_query( $query='', $key='' ) {
if ( !empty( $query ) ) {
$obj_query = new WP_Query;
$obj_query->parse_query( $query );
$obj_query->set( 'posts_per_page', 1 );
$obj_query->get_posts();
if ( $obj_query->have_posts() ) {
$id = $obj_query->post->ID;
}
unset( $obj_query );
}
return ( !empty( $id ) ) ? get_post_meta( $id, $key, true ) : '';
}
という関数を、テーマの functions.php に追加し、テンプレートの所定の位置で
<?php echo esc_html( get_post_meta_by_query( 'cat=1&offset=5', 'カスタムフィールドA' ) ); ?>
のようなコードを記述してみてください。この例では、カテゴリーIDが1の最新記事から6件目のカスタムフィールドAの値を取得、表示できるはずです。esc_html() は値に HTML を含む場合はやめて、代わりに適切なフィルタを適用した方が良いかもしれません。
条件の指定方法はテンプレートタグの query_posts() と同じですが、強制的に 1 件のみの表示としてありますので、表示件数についての指定は無効になります。
# 先ほどは、投稿した関数に問題があったので一旦削除しました。失礼しました。
返信が遅れてしまいすみません。
書いて頂いたコードを試してみたところ、まさに希望通りに表示されました。
テンプレートタグでは対処出来ず、関数を自作する知識もまだ無い為
半ば諦めていたのですが・・・本当に助かりました。
ループが不要なのでとても使い易いです。
ご親切にありがとうございました。