如何使用AJAX实现wp_Query帖子

时间:2017-03-10 作者:Tcmxc

我有一个导航栏,里面有类别。当我将鼠标悬停在一个类别上时,我想使用ajax查询最近的3篇文章。

html标记

<ul>
    <li id="alabama">Alabama</li>
    <li id="banana">Banana</li>
    <li id="bible">Bible</li>

</ul> 

<div id="main"></div>
ajax调用

$( "#alabama" ).click(function() {
 var ajaxurl = "<?php echo admin_url(\'admin-ajax.php\'); ?>";
      $.post(
          ajaxurl, 
          {
              \'action\'  :   \'fetch_posts\',
              \'fetch\' :   \'alabama\',
          }, 
          function(output){
            $(\'#main\').html(output);
          });
});
enter code here
函数中的php。php

function import_post() {
    if($_REQUEST[\'fetch\'] == \'alabama\'){
        $query_args = array(
                \'post_type\' => \'post\',
                      \'tax_query\' => array(
                      \'relation\' => \'AND\',
                          array(
                              \'taxonomy\' => \'category\',
                              \'field\'    => \'slug\',
                              \'terms\'    => array( \'news\' ),

                          ),
                          array(
                              \'taxonomy\' => \'category\',
                              \'field\'    => \'slug\',
                                  \'terms\'    => array( \'alabama\' ),
                          ),
                      ),
            );
            $the_query = new WP_Query( $query_args ); 

        if ( $the_query->have_posts() ) :
             while ( $the_query->have_posts() ) : $the_query->the_post();
                $return_str.= \'<div class="col-md-3">\';
                $return_str.= \'<li>\' . get_the_title() . \'</li>\';
                $return_str.=\'</div>\';
            endwhile;
            wp_reset_postdata();
            else :
                $return_str.= \'No posts found\';
        endif;
    } 


    echo $return_str;
    die;
}



add_action(\'wp_ajax_fetch_posts\', \'fetch_posts\');

add_action(\'wp_ajax_nopriv_fetch_posts\', \'fetch_posts\');

1 个回复
SO网友:scott

我想发表一系列评论,但总的篇幅太长,无法发表评论,所以我必须写一个答案。

你应该说明什么是有效的,什么是失败的,并告诉我们你是如何让它发挥作用的。查看代码太笼统了。

在wordpress中,jQuery别名$ 通常不起作用。但是,如果您打开了开发人员工具控制台,则应该会收到一条错误消息。我总是使用jQuery 而不是$ 只是为了避免愚蠢的错误。

您声明要将鼠标悬停在某个类别上,但您的触发器已单击。

$( "#alabama" ).click(function() {

如果没有任何悬停行为,请尝试单击。

尽管回调函数似乎将数据放在了错误的位置,但AJAX调用看起来很正常。如果希望查询在悬停状态下进行,那么output 进入工具提示?

AJAX调用中的操作是fetch_posts 但是您的PHP函数被调用import_post. 这两个函数必须相同,AJAX才能工作。

PHP函数使用$_REQUEST[] 变量既然您是通过POST发送AJAX,那么您可以使用$_POST[] 变量它可能不会破坏或修复任何要更改的内容,但对我来说它更有意义(代码更具可读性)。

开发AJAX调用时,我会像您一样设置jQuery AJAX调用。然后创建处理AJAX调用的PHP函数。首先,我只是回显通过AJAX发送的数据。一旦我知道这是可行的,那么我就编写SQL,并对其进行响应,以确保没有语法错误。此时,我获取所需的数据并将其发回。最后一步是在AJAX回调函数中正确显示数据。

好的,这是您的AJAX教程。希望有帮助。

相关推荐

WordPress AJAX错误400向远程站点发送数据的错误请求

我正在使用发件人。net获取电子邮件订阅列表。这个网站给了我一些信息,可以将用户的电子邮件添加到订阅列表中。我想使用WordPress ajax来实现这一点。但它返回错误400错误请求。我的代码是:文件ajax新闻脚本。js公司: jQuery(document).ready(function($){ // Perform AJAX send news on form submit $(\'form#fnews\').on(\'submit\', funct