从自定义挂钩调用产品搜索

时间:2020-11-30 作者:Toma Tomov

我正在尝试从自定义表单中发出搜索请求。为此,我在表单提交时有一个AJAX调用:

jQuery("#header-search").on(\'submit\', function () {
        jQuery.ajax({
            url: my_ajax_object.ajax_url,
            data: jQuery(this).serialize()
        })
        .then(function (res) {
            console.log(res)
        })
        return false
    })
在我的功能中。php我有:

function custom_search () {
    //WHAT SHOULD I CALL HERE
}
add_action( \'wp_ajax_nopriv_custom_search\', \'custom_search\' );
add_action( \'wp_ajax_custom_search\', \'custom_search\' );
我不确定这是否应该作为AJAX实现,但我真的不知道应该在HTML中的搜索表单上采取什么操作。我觉得一切都一团糟。你能帮我吗?感谢每一个建议。

1 个回复
SO网友:Toma Tomov

我的理解是,不需要AJAX。如果有人不理解所有这些奇特的例子,您只需要使用pre_get_posts 钩就我而言,我所做的是:

function custom_product_search($query) {
    $query->query_vars[\'post_parent\'] = htmlentities($_GET[\'model\']) ?? htmlentities($_GET[\'make\']);
    return $query;
}
add_action("pre_get_posts", \'custom_product_search\');
我不知道这是否是正确的解决方案,但它正在发挥作用。

相关推荐

Do_action在AJAX回调中不起作用

我想在ajax任务成功完成后执行一些操作。例如,如果项目添加到购物车,我想发送电子邮件。还可能执行一些其他操作。设置do_action(\'prefix_item_added_to_cart\', $args); 无法识别,因此add_action 不执行任务,在我的情况下是发送电子邮件。如果我编写代码和过程代码来发送电子邮件,效果很好,但使用do_action.不起作用// ajax callback function function my_ajax_callback() {