Wordpress中的Ajax搜索功能

时间:2014-11-21 22:56:42

标签: jquery ajax wordpress

我尝试使用admin-ajax.php文件向我的网站添加ajax搜索功能,但没有它,但没有运气。我也在网站的其他部分使用JQuery,并且由于此代码,脚本停止工作。当我评论它时,其他脚本(如滑动导航栏)再次开始工作。这是代码 - ---- functions.php ------

function wpa56343_search()
 {
  global $wp_query;
  $search = $_POST['search_val'];
  $args = array(
    's' => $search,
    'posts_per_page' => 5
  );
  $wp_query = new WP_Query( $args );

  get_template_part( 'search-results' );

  exit;
 }
 add_action('wp_ajax_nopriv_wpa56343_search', 'wpa56343_search'); 
 add_action('wp_ajax_wpa56343_search', 'wpa56343_search');

---- JS文件----

jQuery(document).ready(function() {   
$("#searchsubmit").click(function(e){
    e.preventDefault();
    var search_val=$("#s").val(); 
    $.ajax({
        type:"POST",
        url: "./wp-admin/admin-ajax.php",
        data: {
            action:'wpa56343_search', 
            search_string:search_val
        },
        success:function(data){
            $('#results').append(response);
        }
});   
});

我在函数文件中使用了wp_enqueue_script来排队脚本。当我添加此代码时,所有jquery功能都会停止,对于搜索页面,我会被重定向到默认页面。提交按钮单击事件也未被触发。有人可以请教吗?我正在尝试一切,但似乎没有任何工作。

2 个答案:

答案 0 :(得分:1)

所以我解决了这个问题。好极了!我没有成功地使上述代码工作,但我在David Albert的博客上发现了我的解决方案(谢谢大卫!)

http://premium.wpmudev.org/blog/how-to-use-ajax-with-php-on-your-wp-site-without-a-plugin/

这是一篇写得很好的文章,很容易理解。在我名下的评论部分下,您可以找到特定于搜索的代码。 (检索和渲染结果)。 希望这可以帮助。

答案 1 :(得分:0)

您无法使用 get_template_part 。以json格式传递数据并使用该数据。

function wpa56343_search()
{
    global $wp_query;
    $search = $_POST['search_val'];
    $args = array(
        's' => $search,
        'posts_per_page' => 5
    );
    $results = new WP_Query( $args );
    echo json_encode( $results );
    exit;
}

还更改了js代码

jQuery(document).ready(function($) {
    $("#search-container").click(function(e){
        e.preventDefault();
        var search_val=$("#s").val();
        $.ajax({
            type:"POST",
            url: "./wp-admin/admin-ajax.php",
            data: {
                action:'wpa56343_search',
                search_string:search_val
            },
            success:function(data){ alert(data);
                $('#results').append(data);
            }
        });
    })
});