欢迎莅临阿Q的项目

专业WP商业设计开发销售中心

[WordPress]settings_errors详解

前几天有用户说在其本地服务器上运行QQWorld自动保存图片插件无法保存任何图片,所以今天想给插件添加一些提示信息,好帮助这类用户更好的解决自己的服务器的配置问题,顺便将研究结果共享给大家。

我们在制作主题和插件的时候,经常需要做一个后台页面来保存自定义的设置。如果要做到更加人性化,还需要对用户保存设置的时候对用户提交的数据进行处理,并且在遇到问题的时候提示用户,最好是能教用户如何去处理问题。这样就需要用到Wordpress的一个接口:

settings_error($setting, $sanitize, $hide_on_update)

其中所有的参数都可以省略,表示调用全局的设置错误信息。

参数定义

$setting:你的设置错误名,默认none;
$sanitize:一个函数名,用于在返回错误前,对设置的值进行修正(比如自动将客户输入的网址前加http://),默认false;
$hide_on_update:如果设置为true,当数据已经被提交时隐藏错误信息。

范例:

<?php
add_action( 'admin_notices', 'unique_admin_notices' );
function unique_admin_notices() {
	settings_errors('your-settings-error-slug');
}
?>

添加错误信息

通常我们不需要自定义错误信息,但如果你需要添加诸如检测是否缺少PHP内置函数的提示,就需要用到了:

add_settings_error($setting, $code, $message, $type)

$setting:你的设置错误名,默认none;
$code:这个不重要,可以随便,因为只是在使用get_settings_errors()函数获取错误信息的时候才会用上;
$message:错误信息字符串;
$type:错误类型,如果是填"updated"便是绿色信息,如果是"error"便是红色信息,你也可以填其他值,不过需要手动指定样式了。

范例:

<?php
add_action( 'admin_notices', 'unique_admin_notices');
function admin_notices() {
	$screen = get_current_screen();
	if (strstr($screen->id, 'your-admin-page-name')) {
		settings_errors('your-settings-error-slug');
		add_settings_error('your-settings-error-slug', esc_attr('settings_updated'), __('need.'), 'updated' );
		add_settings_error('your-settings-error-slug', esc_attr('need_curl'), __('Your server PHP does not support CURL.'), 'error' );
	}
}
?>

获取错误信息

get_settings_errors($setting, $sanitize)

$setting:你的设置错误名,默认none;
$sanitize:一个函数名,用于在返回错误前,对设置的值进行修正(比如自动将客户输入的网址前加http://),默认false;

该函数将返回指定页面的所有错误信息的数组。

如果喜欢本文,请分享给朋友们