Как отобразить все сообщения, когда я загружаю страницу в WordPress? - PullRequest
0 голосов
/ 24 мая 2019

У меня есть страница продукта, и я поместил раскрывающийся список с категориями публикации. Поэтому я хочу отображать все продукты по умолчанию при загрузке страницы продукта. Вызов ajax вызывается только при выборе категории изЕсть ли способ показать все сообщения, когда я загружаю страницу?

enter image description here

В раскрывающемся меню есть 3 варианта категории (по умолчанию), продукты питания и предметы гостеприимства

-Код переднего конца

<select class="event-dropdown"> 
    <option value=""><?php echo esc_attr(__('Select category')); ?></option> 
    <?php 
        $categories = get_categories(); 
        foreach ($categories as $category) {
            $option .= '<option value="'.$category->slug.'">';
            $option .= $category->cat_name;
            $option .= '</option>';
        }
        echo $option;
    ?>
</select>
</div>     
<div class="test"></div><!---test --->

<script>
var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";
$('.event-dropdown').on('change', function()
  {
      var cat_slug= this.value;
    $.ajax({
    type:"post",
    url: ajaxurl,
    data:{
      'action': 'my_action',
      'whatever': cat_slug,
    },
    success: function( data ) {
      $(".test").html(data);
    }
    })
  });
</script>

Backend-Funtions.php

     add_action( 'wp_ajax_my_action', 'my_action' );
      function my_action() {
        global $wpdb; // this is how you get access to the database

        $whatever = $_POST['whatever'];

          $args = array(      
                  'category_name' =>$whatever,  
                  'post_type' => 'ProductsNew',
                  'posts_per_page' => get_option('posts_per_page'),
                  'order'=>'ASC'
                        );
             $query = new WP_Query( $args );

                        // The Query
                        $the_query = new WP_Query( $args );




                        $total = $the_query->post_count;

                        if ( $i == 0 ) echo '<div class="row">';

                        // The Loop
                        if ( $the_query->have_posts() ) {

                          while ( $the_query->have_posts() ) {
                            $the_query->the_post();?>

          <div class="col-sm-4 ">
            <div class="reduce">
             <div class="card">
              <?php the_post_thumbnail('',array('class'=>'img-responsive'));?>

                <h3><?php the_field('product_title')?></h3>
                <p class="price"><?php the_field('product_price');?> </p>
                <div class="discription">  
                    <?php the_content(); ?>
                </div>     
             </div>
          </div>
        </div>
       <?php $i++;
         if($i == $total){
        echo '</div>';
       } else  {
            if( $i % 3 ==0){ echo'</div><div class="row">';  }

               }
                          }
                          /* Restore original Post Data */
                          wp_reset_postdata();
                          wp_die();
                        } else {
                          // no posts found
                          wp_die();
                        }  

} 

Когда я открываю страницу продуктов, она не отображает все сообщения, только после выбора категории, в которой отображается сообщение.я выбираю опцию категории selcect, в которой отображаются все сообщения.

1 Ответ

0 голосов
/ 24 мая 2019

Один простой способ показать все сообщения похож на ваш WP_Query($args).Попробуйте взять ту же самую переменную $args и использовать ее с функцией Wordpress get_posts().Затем вы получаете цикл через то, что возвращается с foreach циклом.Вот изображение:

$args = array(      
 'category_name' =>$whatever,  
 'post_type' => 'ProductsNew',
 'posts_per_page' => get_option('posts_per_page'),
 'order'=>'ASC'
);

$product_array = get_posts($args);

foreach($product_array as $product) {
 // display your product cards
}

Не стесняйтесь бросать это куда угодно, может быть, сразу после .col-sm-4 или после .event-dropdown.

get_posts docs

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...