0

我使用 Wordpress 作为内容管理系统,我的模板有一个带box类的 div,并包含一个下拉列表。我的目标是使用这个值在 ajax 方法中获取这个下拉列表和查询帖子的值,然后box使用 ajax 重新加载 div,为了更清楚这里是标记:

   <select>

       <option value="1">Item 1</option>

       <option value="2">Item 2</option>

       <option value="3">Item 3</option>

       <option value="4">Item 4</option>

   </select> 

 ------------------
   <div class="content">

     <?php
     $args = array(

        "meta_query" => array(
                array(
                    'key' => 'meta',
                    'value' => '$select_value',
                    )
            )
    );

    query_posts( $args );

      ?> 

      <?php  if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

            <?php the_content(); ?>


      <?php endwhile; else: ?>

             <p>sorry no post found with this value.</p>

      <?php endif; ?>

我认为示例代码很清楚,但我想做这个过程:

用户在dropdown list --> get select value --> put it in $select_value --> run query --> show the div box不使用 ajax 重新加载整个页面的情况下选择一个项目...

有人可以帮我写这个吗?

4

1 回答 1

1
   <select id="select-dropdown">
     <option value="1">Item 1</option>
     <option value="2">Item 2</option>
     <option value="3">Item 3</option>
     <option value="4">Item 4</option>
    </select> 

为此,您应该了解 wordpress 中的 Admin Ajax。

管理 Ajax:在你的 header.php中

<script type="text/javascript">
 var ajax_url = '<?php echo admin_url('admin-ajax.php'); ?>';
</script>

在你的自定义 js 文件中

my-custom.js,将 js 文件排入队列

jQuery(document).ready(function(){
  jQuery(body).on('change','#select-dropdown', function(){
     var selected_item  = jQuery(this).val();
     jQuery.ajax({
       type: "POST",
       url: "ajax_url",
       data: {
             action: 'load_posts',
             selected_item: selected_item,
           },
       success: function(res){
         console.log(res);
         //append the result in frontend
         jQuery('.box').html(res);
        },


     })
  })
});

在你的function.php

function _boom_load_posts(){
 //get your results here as per selected option
 if(!empty($_POST['selected_item'])){
  $selected_item = $_POST['selected_item'];
  $output = '';
  //rest of the code as per selected_item, store result in $output
  $args = array(

    "meta_query" => array(
            array(
                'key' => 'meta',
                'value' => '$select_value',
                )
        )
);

query_posts( $args );
if ( have_posts() ) : while ( have_posts() ) : the_post();

        $output .= get_the_content();
endwhile; else: 

         $output .= "<p>sorry no post found with this value.</p>"

  endif; 

  echo $output;//you result here
  die(1);
 }
}
add_action('wp_ajax_load_posts', '_dot1_load_posts');
add_action('wp_ajax_no_priv_load_posts', '_dot1_load_posts');

进行所需的更改,因为我无法为您发布整个代码,请做出一些努力,上面的代码将帮助您了解它是如何工作的。

于 2013-08-20T08:13:16.047 回答