首先,您的代码中有一些错误。
术语表称为wp_terms
而不是wp-terms
查询$qry
不正确,内部查询的WHERE
-条款:SELECT term_id as term_id FROM wp_term_taxanomy = \'category\'
应该是SELECT term_id as term_id FROM wp_term_taxanomy WHERE taxonomy = \'category\'
改进:使用$wpdb->prefix
而不是静态wp_
(并非所有WordPress安装都使用wp_
您可以注册AJAX
函数,而不是functions.php
清理后
可以使用如下代码:
您的模板文件
<?php
get_header();
global $wpdb;
$qry = "select * from {$wpdb->prefix}terms where term_id IN ( SELECT term_id as term_id FROM {$wpdb->prefix}term_taxanomy WHERE taxonomy = \'category\' )";
$data = $wpdb->get_results( $qry );
foreach( $data as $term ) {
?>
<div class="checkbox" id="checkpadding">
<label>
<input type="checkbox" class="catclass" value="<?php echo $term->term_id; ?>">
<span id="checktext"><?php echo $term->name; ?></span>
</label>
</div>
<?php
}
<script>
jQuery(document).ready(function() {
jQuery(\'.catclass\').change(function () {
if (this.checked) {
var catid = ((this.value));
var ajaxurl = \'<?php echo admin_url(\'admin-ajax.php\'); ?>\';
jQuery.ajax({
url: ajaxurl,
data: {
\'action\': \'getpost\',
\'catid\': catid
},
success: function (data) {
alert(data);
if(data.type == "success") {
alert("success");
}
else {
alert("AJAX error")
}
},
error: function (errorThrown) {
console.log(errorThrown);
}
});
}
});
});
</script>
<?php
get_footer();
?>
您的功能。php将其余部分添加到函数中。php:
<?php
add_action(\'wp_ajax_getpost\',\'getpost\');
add_action(\'wp_ajax_nopriv_getpost\', \'getpost\');
function getpost() {
echo "hi";
die();
}
?>
这种情况下你应该没事。
调试
考虑启动
AJAX
在不使用select中的变量的情况下调用,以确保正确注册该变量。
之后,创建$array
对于您的响应,您可以使用wp_send_json()
, 所以你可以像这样处理你的价值观data.type
等等。