【发布时间】:2018-03-13 11:13:55
【问题描述】:
我知道这是一个常见问题,我几乎把所有关于它的主题都涂红了,但我找不到适合我情况的答案。
我编写了一个插件来添加国家和语言相关(例如美国->英语|Sapnish)我正在使用类和构造函数来实现插件的功能。它完全正常工作,期望以下功能: 我在所有国家/地区都得到了一个选择,并且在更改此选择操作时使用 ajax 的另一个功能,传递的数据是好的,但响应总是返回 0,是否以管理员身份连接。
这是我的 ajax:
$('#sel-country-back').change(function(){
var post_id = $(this).val();
change_status(post_id);
})
function change_status(id) {
$.ajax({
url: window.location.origin + '/wp-admin/admin-ajax.php',
data: {
action: 'wmu-display-lang-select',
post_id: id,
},
type: 'post',
success:function(data){
$('#lang-back').html(data);
},
error: function(errorThrown){
$('#lang-back').html('<select name="langBack" id="sel-lang-back"><option value="default" class="no-lang-option">Aucune langue associée</option></select>');
}
});
}
和我的功能
public function wmu_display_lang_select()
{
if ($_POST['post_id']) {
$id = sanitize_text_field($_POST['post_id']);
$lang = self::getLang($id);
if ($lang !== false) {
$response = array(
'status' => 200,
'content' => $lang
);
}
else {
$response = array(
'status' => 201,
'message' => __('Le fichier demandé n\'existe pas', 'cadwork')
);
}
die(json_encode($response));
}
}
将动作添加到构造函数中
public function __construct()
{
add_action('admin_menu', array($this, 'wmu_add_menu'));
add_action('wp_ajax_wmu_display_lang_select', 'wmu_display_lang_select');
add_action('wp_ajax_nopriv_wmu_display_lang_select', 'wmu_display_lang_select');
}
我试图在类实例化之后将 add_action 放在类之外
$wmu = new WB_MultiLang_URL();
add_action('wp_ajax_wmu_display_lang_select', 'wmu_display_lang_select');
add_action('wp_ajax_nopriv_wmu_display_lang_select', 'wmu_display_lang_select');
但它似乎不起作用,
你有什么想法吗?我认为这是某个地方的愚蠢错误或错误,但我找不到它......
【问题讨论】:
标签: php jquery ajax wordpress plugins