0

WordPress のカスタム投稿タイプと既存のテンプレートに統合する方法についてはまだコツをつかんでいますが、思いついたコードを単純化できるかどうかについて簡単な質問があります。

1 つの特定のテンプレートから呼び出す必要がある複数のページがあり、各ページとそれに対応するカスタム投稿タイプ コードを呼び出す条件ステートメントを追加しましたが、基本的に各条件ステートメントのほとんどのコードを繰り返しているので、このコードを簡素化する方法があったかどうか疑問に思っています:

            <div class="row">
            <?php if (is_page(165)) {
                $args = array(
                'post_type' => 'restaurant',
                    'paged'=>$paged,
                    'orderby'=>'title',
                    'order'=>'ASC',
                'tax_query' => array(
               array(
                'taxonomy' => 'restaurant_category',
                'field' => 'slug',
                'terms' => 'sooke'
                   )
                )
            );
            $restaurants = new WP_Query( $args );
            if( $restaurants->have_posts() ) {
               while( $restaurants->have_posts() ) {
               $restaurants->the_post();
            ?>
            <div class="col-sm-4 col-md-4">
               <h1><?php the_title() ?></h1>
                <?php the_content() ?>
            </div>
               <?php
                 }
               }
               else {
                echo 'No Restaurants';
               }
               } ?>
        </div>
            <div class="row">
            <?php if (is_page(12)) {
                $args = array(
                'post_type' => 'restaurant',
                    'paged'=>$paged,
                    'orderby'=>'title',
                    'order'=>'ASC',
                'tax_query' => array(
               array(
                'taxonomy' => 'restaurant_category',
                'field' => 'slug',
                'terms' => 'chilliwack'
                   )
                )
            );
            $restaurants = new WP_Query( $args );
            if( $restaurants->have_posts() ) {
               while( $restaurants->have_posts() ) {
               $restaurants->the_post();
            ?>
            <div class="col-sm-4 col-md-4">
               <h1><?php the_title() ?></h1>
                <?php the_content() ?>
            </div>
               <?php
                 }
               }
               else {
                echo 'No Restaurants';
               }
               } ?>
        </div>

コードを何度も繰り返さないようにこのコードを単純化する方法があれば、カスタム投稿タイプ コードを使用して条件付きステートメントを作成する方法と作成しない方法を学ぶことができるように、その方法を教えていただければ幸いです。未来。前もって感謝します!

Dk-Macadamia の場合 (白い画面になる更新コード)

            <?php $terms=array('165'=>'sooke','12'=>'chilliwack');

            //now check it

            if(has_term($terms))
            { ?>
            <div class="row">
                    <?php 
                 foreach($terms as $key=>$val)
                   {
                 if(is_page($key)) {
                         $args = array(
                        'post_type' => 'restaurant',
                        'paged'=>$paged,
                        'orderby'=>'title',
                        'order'=>'ASC',
                        'tax_query' => array(
                array(
                        'taxonomy' => 'restaurant_category',
                        'field' => 'slug',
                        'terms' => $val
                            )
                        )
                    ); ?>
            </div>
4

2 に答える 2

0

switch ステートメントを使用して

switch ($slug_name)

case 1 : 'chilliwack'
   my_func('chilliwack');
break;
and so on ....


// here is function

  <?php 
            function my_func($slug) {
                $args = array(
                'post_type' => 'restaurant',
                    'paged'=>$paged,
                    'orderby'=>'title',
                    'order'=>'ASC',
                'tax_query' => array(
               array(
                'taxonomy' => 'restaurant_category',
                'field' => 'slug',
                'terms' => "$slug"
                   )
                )
            );
            $restaurants = new WP_Query( $args );
            if( $restaurants->have_posts() ) {
               while( $restaurants->have_posts() ) {
               $restaurants->the_post();
            ?>
            <div class="col-sm-4 col-md-4">
               <h1><?php the_title() ?></h1>
                <?php the_content() ?>
            </div>
               <?php
                 }
               }
               else {
                echo 'No Restaurants';
               }
               }
               ?>
        </div>
于 2013-11-04T05:14:55.623 に答える
0

has_terms()を探していると思います。コードで次のように試すことができます。カスタムテンプレートで作業しているため、このような手動で配列を設定できます。

$terms=array('165'=>'sooke','12'=>'chilliwack');

//now check it

if(has_term($terms))
{ ?>
<div class="row">
            <?php 
     foreach($terms as $key=>$val)
          {
           if(is_page($key)) {
                $args = array(
                'post_type' => 'restaurant',
                    'paged'=>$paged,
                    'orderby'=>'title',
                    'order'=>'ASC',
                'tax_query' => array(
               array(
                'taxonomy' => 'restaurant_category',
                'field' => 'slug',
                'terms' => $val
                   )
                )
            );
于 2013-11-04T03:41:04.800 に答える