可能导致主题错误的原因是什么?
我正在制作Wordpress插件,我不是原作者。该插件已售出,我正在尝试协助新所有者(非开发人员)更新插件。
该插件具有多列表类型配置文件字段扩展的选项。但是,该字段未显示在注册页面上,因为注册部分中没有该代码。我已经添加了代码以在注册页面上显示此字段,它似乎可以工作,直到单击“注册”按钮。
问题是如果选择了任何多列表项,则会抛出主题错误并且不会发生注册。只要该字段没有选择,就没有错误并且会进行注册。
我不知道究竟发生了什么,我想我会在一个console.log()调用中显示' this'变量,看看我是否能检测到任何错误。这并不能证明有所帮助。这种错误是由不匹配的数据类型引起的吗?我在这里处理jQuery和对象的问题。我试图尽快学习,但这个让我很难过。
这是PHP代码段:
//Multilist type field
if ($extension->wps_extension_type == 'multilist'):
$values = explode(',', get_post_meta($extension->ID, 'wps_extension_default', true));
$selected = $current ? $current : array();
$item_html .= '<div class="wps_registration_field"><select id="'.$key.'" rel="'.$extension->ID.'" class="wps_registration_value wps_registration_multilist'.$mand.'" multiple="multiple" data-key="'.$key.'" size="'.sizeof($values).'" style="width: 400px;">';
$all_values = explode(',', get_post_meta($extension->ID, 'wps_extension_default', true));
if ($all_values):
foreach($all_values as $value):
$item_html .= '<option id="'.$key.'" rel="'.$extension->ID.'" class="wps_registration_value" value="'.$value.'">'.$value.'</option>';
endforeach;
endif;
$item_html .= '</select></div>';
if ($mand) $item_html .= $mandatory;
endif;
这里是jQuery的代码片段:
// Registration
jQuery("#wps_register_submit").click(function (event) {
if (jQuery('#wps_registration_dummy_field').val() == '') {
jQuery('#wps_register_error').hide();
// Check for mandatory fields
var found = false;
var my_var = jQuery(this).val();
console.log('This value: ' + JSON.stringify(my_var));
jQuery('.wps_register_mandatory').removeClass('wps_field_error');
jQuery('.wps_register_mandatory').each(function(i, obj) {
if (jQuery(this).css('display') != 'none' && jQuery(this).attr('id').substr(0, 4) != 's2id' && jQuery(this).val() == '') {
jQuery(this).fadeOut().fadeIn().addClass('wps_field_error');
found = true;
}
if (jQuery(this).val() !== null) {
var my_var = jQuery(this).val();
console.log('This value: ' + JSON.stringify(my_var));
if (jQuery(this).val().trim() == '') {
if (jQuery('#s2id_'+jQuery(this).attr('id')).length > 0) {
jQuery('#s2id_'+jQuery(this).attr('id')).addClass('wps_field_error');
found = true;
}
}
}
});
if (found) {
// Missing mandatory fields
} else {
jQuery("body").addClass("wps_wait_loading");
jQuery("#wps_register_submit").attr("disabled", true);
// Get any profile extensions
var exts = [];
jQuery('.wps_registration_value').each(function(i, obj) {
var id = jQuery(this).attr('rel');
if (id != undefined) {
var value = jQuery(this).val();
if (value) {
var ext = {};
ext['key'] = jQuery(this).data('key'),
ext['id'] = id;
ext['value'] = value;
exts.push(ext);
}
}
});
var wps_reg_code = '';
if (jQuery('#wps_reg_code').length) {
wps_reg_code = jQuery('#wps_reg_code').val();
}
jQuery.post( wps_login_ajax.ajaxurl, {
action : 'wps_register_check',
username : jQuery('#wps_register_username').val(),
email : jQuery('#wps_register_email').val(),
email2 : jQuery('#wps_register_email2').val(),
first_name : jQuery('#wps_register_firstname').val(),
last_name : jQuery('#wps_register_familyname').val(),
nickname : jQuery('#wps_register_nickname').val(),
display_name : jQuery('#wps_register_display_name').val(),
captcha : jQuery('#wps_captcha_form').val(),
wps_reg_code : wps_reg_code,
wpspro_home : jQuery('#wps_register_wpspro_home').val(),
wpspro_country : jQuery('#wps_register_wpspro_country').val(),
password : jQuery('#wps_register_password').val(),
password_confirm : jQuery('#wps_register_password_confirm').val(),
registration_url : jQuery('#wps_registration_url').val(),
register_auto : jQuery('#register_auto').val(),
exts: exts,
},
function(response) {
jQuery("#wps_register_submit").attr("disabled", false);
if (response.substr(0, 2) != 'OK' && response.substr(0, 3) != 'URL') {
jQuery("body").removeClass("wps_wait_loading");
// Error, show message
jQuery('#wps_register_error').removeClass('wps_success').addClass('wps_error');
jQuery('#wps_register_error').html(response).slideDown('fast');
} else {
if (response.substr(0, 3) == 'URL') {
// Success, redirect if need be
window.location = response.substring(3);
} else {
jQuery("body").removeClass("wps_wait_loading");
// Success, show message
jQuery('#wps_register_username').val('');
jQuery('#wps_register_email').val('');
jQuery('#wps_register_email2').val('');
jQuery('#wps_register_firstname').val('');
jQuery('#wps_register_familyname').val('');
jQuery('#wps_register_error').removeClass('wps_error').addClass('wps_success');
jQuery('.wps_registration_row').hide();
jQuery('.wps_registration_item').hide();
jQuery("#wps_register_submit").hide();
jQuery('#wps_register_error').html(response.substring(2)).slideDown('fast');
}
}
}
);
}
}
});
您可以在http://stage.alkpositive.org/login/上的暂存网站上查看此操作。
感谢您的帮助。