【问题标题】:WP Ajax Form not passing $_GETWP Ajax 表单未通过 $_GET
【发布时间】:2021-08-25 10:32:06
【问题描述】:

$_GET 没有传入我的 ajax 回调函数是我的代码。

$_GET 未通过,因此我无法使用 WP_Query 上的条款查询帖子。

我想做的是;通过 AJAX 从表单中获取 $_get 值并运行 WP_Query。我在表单中使用引导多选。

函数.php ;


add_action('wp_ajax_my_ajax_filter_search', 'my_ajax_filter_search_callback');
add_action('wp_ajax_nopriv_my_ajax_filter_search', 'my_ajax_filter_search_callback');

function my_ajax_filter_search_callback() {

    header("Content-Type: application/json");

    $meta_query = array('relation' => 'AND');

    $tax_query = array();

    if($_GET['app_category_multi']) {
        $app_cat = sanitize_text_field( $_GET['app_category_multi'] );
        $tax_query[] = array(
            'taxonomy' => 'app_category',
            'field' => 'slug',
            'terms' => $app_cat,
            'operator' => 'AND'
        );
    }
  
    $args = array(
        'post_type' => 'playbook',
        'posts_per_page' => -1,
        'meta_query' => $meta_query,
        'tax_query' => $tax_query
    );


    $search_query = new WP_Query( $args );

    if ( $search_query->have_posts() ) {

        $result = array();

        while ( $search_query->have_posts() ) {
            $search_query->the_post();
            $result[] = array(
                "title" => get_the_title(),
                "permalink" => get_permalink(),
                "short_images" => get_short_images(),
                "get_tags" => get_tags_item(),
                "short_description" => get_field('short_description')

            );
        }
        wp_reset_query();

        echo json_encode($result);

    } else {
        // no posts found
    }
    wp_die();

}

非常感谢。

【问题讨论】:

  • 你还没有分享你的JS请求部分代码。可能是您正在发送帖子请求?无论如何,尝试使用 $_REQUEST['app_category_multi'] 而不是 $_GET['app_category_multi']。

标签: php ajax wordpress


【解决方案1】:

使用wordpress函数get_query_var()你可以做到以下几点:

function my_ajax_filter_search_query_vars( $qvars ) {
    $qvars[] = 'app_category_multi';
    return $qvars;
}
add_filter( 'query_vars', 'my_ajax_filter_search_query_vars' );

然后在你的代码中


if(get_query_var( 'app_category_multi')) {
    $app_cat = sanitize_text_field( get_query_var( 'app_category_multi') );
    $tax_query[] = array(
        'taxonomy' => 'app_category',
        'field' => 'slug',
        'terms' => $app_cat,
        'operator' => 'AND'
    );
}

更多信息请参见 wordpress 文档 - https://developer.wordpress.org/reference/functions/get_query_var/

【讨论】:

  • 非常感谢,我试过了,但它仍然返回 null。
  • 因此,查询运行时没有 tax_query 参数。
【解决方案2】:

问题来自 Bootstrap 多选库。我为他们添加了 3 个隐藏输入。之后我用 jQuery 更新了它们的值。

输入值已通过php的explode转换为数组,并使用WP_Query放入tax_query。

如果您遇到这样的“罕见”问题,那不是来自 WordPress。它来自多选库。

非常感谢所有贡献者。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-29
    • 2014-02-04
    • 2019-10-21
    • 1970-01-01
    • 1970-01-01
    • 2016-11-25
    • 2013-02-27
    • 1970-01-01
    相关资源
    最近更新 更多