如何使用ajax从wordpress中的多个自定义表中获取数据。我在wordpress数据库状态,城市,城镇,pincode有四个表,我想从数据库中按名称或密码搜索结果。
我的主题
中有一个名为advanced-searchform.php的自定义搜索框<form method="get" id="advanced-searchform" role="search" action="<?php echo esc_url( home_url( '/' ) ); ?>">
<h3><?php _e( 'Advanced Search', 'textdomain' ); ?></h3>
<!--PASSING THIS TO TRIGGER THE ADVANCED SEARCH RESULT PAGE FROM functions.php-->
<input type="hidden" name="search" value="advanced">
<label for="name" class=""><?php _e( 'Search By Name: ', 'textdomain' ); ?></label><br>
<input type="text" id="cityname" value="" placeholder="<?php _e( 'Enter Name', 'textdomain' ); ?>" name="name" />
<label for="name" class=""><?php _e( 'Search By Code: ', 'textdomain' ); ?></label><br>
<input type="text" value="" placeholder="<?php _e( 'Enter Pin Code', 'textdomain' ); ?>" name="pincode" />
<input type="submit" id="searchsubmit" value="Search" />
在functions.php中注册Hook
enter function wpse_load_custom_search_template(){
if( isset($_REQUEST['search']) == 'advanced' ) {
require('advanced-search-result.php');
die();
}}add_action('init','wpse_load_custom_search_template');
并显示结果advanced-search-result.php
$keyword = $_GET['name'];
$query = "(SELECT state_name as type FROM state WHERE state_name LIKE '%" .$keyword . "%')
UNION
(SELECT district_name as type FROM district WHERE district_name LIKE '%" .$keyword . "%')
UNION
(SELECT city_name as type FROM city WHERE city_name LIKE '%" .$keyword. "%')";
$result = $wpdb->get_results($query);var_dump($result);
请告诉我如何在自动完成时获取带有ajax的数据,当我输入3-4个数据时,显示来自数据库的匹配数据提示。
答案 0 :(得分:0)
我发现您使用了错误的钩子来调用您的函数来获取搜索结果。
要调用AJAX响应函数,您必须使用以下钩子:
add_action( 'wp_ajax_nopriv_[actionname]', '[functionname]' );
add_action( 'wp_ajax_[actionname]', '[functionname]' );
function [functionname]() {
}
在你的jQuery代码中(从你调用ajax的地方),你需要传递&#34; action&#34;变量和数据。以下是jQuery和function.php代码
的一个示例jQuery代码:
data = {
action : 'test',
[other parametervalues]
};
jQuery.post('<?php echo admin_url( 'admin-ajax.php' );?>', data, function(response) {
// code based on your response from AJAX
});
Function.php中的代码
add_action( 'wp_ajax_nopriv_test', 'callbackFunction' );
add_action( 'wp_ajax_test', 'callbackFunction' );
function callbackFunction() {
// your code
echo ""; // whatever you want to send in AJAX response
die();
}
如果您需要任何进一步的帮助,请与我们联系。