0

Wordpress と高度なカスタム フィールドを使用しています。

さまざまなページの抜粋を表示したり、それらをフィルタリングしたりするページを作成できるようにしたいと考えています。

例: 10 の異なるページがあり、それぞれがホテルに関するもので、ホテル、ホテル名、場所、施設などに関するさまざまな情報がフィールド (高度なカスタム フィールド) に保存されています。

10 のホテルはメイン ページの子ページです。メイン ページにはすべてのホテルが表示されますが、説明の抜粋や画像など、ホテルに関する特定の詳細のみが表示されます。

カテゴリと呼ばれる別の高度なカスタム フィールドを作成し、それが機能するかどうかをテストするために、実際のホテル関連ページのいくつかについてのみフィールドに「ホテル」を入力しました。

私が苦労しているのは、ページに「ホテル」のカテゴリにあるホテルのみが表示されるようにコードを書くことです。テンプレートファイルにコードを書いているので、すべてのホテルをリストするメインのホテルページはこれを使用していますテンプレート。

すべてが投稿ではなくページを使用しています。すべての情報は Advanced Custom Fields プラグインを介してフィールドに保存されます。

私は、コードが動作するためifelse関数を使用する必要があると思います。

誰かがこの問題で私を助けることができれば、それは大歓迎です。

4

1 に答える 1

1

特定のカスタム フィールドに特定の値が設定されているページを照会したいと考えているようです。これを行うには、次のように、ページ テンプレートでメタ クエリを使用できます。

<?php
$args = array(
    'post_type' => 'page',
    'meta_query' => array(
        array(
            'key' => 'Category',
            'value' => 'Hotel',
            'compare' => 'LIKE'
        )
    ),
        'posts_per_page' => get_option('posts_per_page')
 );
$hotel_query = new WP_Query( $args );
?>

カスタム フィールドを使用したより高度なクエリについては、 WP_Query のカスタム フィールド パラメータに関するドキュメントを確認してください。

カスタム クエリを取得したら、通常とほぼ同じように結果をループできます。

<ul>
<?php if ( $hotel_query->have_posts() ) : while ( $hotel_query->have_posts() ) : $hotel_query->the_post(); ?>
    <li><?php the_title(); ?></li>

<?php endwhile; endif; ?>
</ul>
于 2012-09-19T02:53:58.893 に答える