📜  acf 选项页面 - PHP (1)

📅  最后修改于: 2023-12-03 15:29:17.212000             🧑  作者: Mango

ACF 选项页面 - PHP

介绍

ACF (Advanced Custom Fields) 是一款非常优秀的 WordPress 自定义字段插件。除了在文章/页面编辑页面上添加自定义字段外,ACF 还允许你在 WordPress 后台添加自定义设置页面,让你更方便地管理网站内容和设置。

ACF 的选项页面功能可以让你在 WordPress 后台添加一个自定义的设置页面,用于管理整个网站的一些基础设置,比如社交媒体链接、网站 Logo、广告代码等等。因此,ACF 的选项页面功能非常适合那些需要定制化管理一些网站特定设置的项目。

实现方式

ACF 选项页面是由一个 PHP 文件和一个 ACF 字段群组组成的。因此,实现一个 ACF 选项页面需要如下几个步骤:

  1. 创建一个 ACF 字段群组,用于保存选项页面的字段。
  2. 在 WordPress 后台的 functions.php 文件中注册选项页面。
  3. 为群组中的字段创建选项页面表单并将表单值保存到数据库中。
  4. 在 WordPress 后台创建选项页面菜单。
创建 ACF 字段群组

要创建 ACF 字段群组,请先在 WordPress 后台进入 ACF 设置页面,然后点击 新建字段群组 按钮。为群组设置一个名称,并在 位置规则 中设置 选项页面 规则。

接着,你可以为该字段群组添加各种不同的字段,如文本框、下拉列表、单选框、多选框等。这些字段将会成为选项页面中使用的表单控件。

注册选项页面

接下来,在 WordPress 主题的 functions.php 文件中注册选项页面。这个过程非常简单,只需要使用 acf_add_options_page() 函数即可。这个函数的作用是向 WordPress 添加一个新的选项页面。

以下是一个基本的例子:

if( function_exists('acf_add_options_page') ) {
	
	$option_page = acf_add_options_page(array(
		'page_title' 	=> '网站设置',
		'menu_title' 	=> '网站设置',
		'menu_slug' 	=> 'theme-general-settings',
		'capability' 	=> 'edit_posts',
		'redirect' 		=> false
	));
	
}

在这个例子中,我们创建了一个名为 网站设置 的选项页面,并将其菜单名称设置为 网站设置。菜单的内部名称为 theme-general-settings。这里的 capability 参数设置为 edit_posts,这意味着只有具有 edit_posts 权限的用户才能访问这个选项页面。

创建选项页面表单

下一步是创建选项页面表单,用于显示和保存来自 ACF 字段群组的数据。这个过程也很简单,只需要按下面的步骤完成即可:

  1. 在选项页面 PHP 文件中加载 ACF 字段群组。
  2. 为表单控件设置默认值。
  3. 将表单数据保存到数据库中。

以下是一个基本的例子,在选项页面 PHP 文件中添加如下代码:

if( function_exists('acf_add_options_page') ) {
	
	$fields = acf_get_fields('options');
	
	if(!empty($fields)) {
		
		// 设置默认值
		$defaults = array(
			'logo' => '',
			'facebook' => '',
			'twitter' => '',
			'youtube' => '',
			'google_plus' => '',
			'instagram' => '',
			'pinterest' => ''
		);
		
		foreach($fields as $field) {
			$field_name = $field['name'];
			$field_value = get_field($field_name, 'options');
			
			// 如果没有值,则使用默认值
			if(empty($field_value) && array_key_exists($field_name, $defaults)) {
				$field_value = $defaults[$field_name];
			}
			
			// 将字段添加到表单中
			$field['value'] = $field_value;
			$acf_fields[] = $field;
		}
		
		// 保存表单数据到数据库
		if(!empty($_POST)) {
			
			foreach($fields as $field) {
				$field_name = $field['name'];
				update_field($field_name, $_POST[$field_name], 'options');
			}
			
			// redirect back to options page with updated data
			$redirect_url = add_query_arg('updated', 'true', $_SERVER['REQUEST_URI']);
			wp_redirect($redirect_url);
			exit;
			
		}
		
	}
	
}

在这个例子中,我们先使用 acf_get_fields() 函数获取所有的选项页面字段。随后,我们为表单中的每个字段设置默认值。如果用户已经在数据库中保存了一个值,则该值将替换默认值。

在表单提交时,我们使用 update_field() 函数将从表单获得的值保存到数据库中 。

创建选项页面菜单

最后一步是在 WordPress 后台创建选项页面菜单。使用以下代码可以添加菜单项:

add_action('admin_menu', 'register_options_subpage');

function register_options_subpage() {
    add_submenu_page(
        'theme-general-settings',
        '网站设置',
        '网站设置',
        'manage_options',
        'theme-general-settings',
        'theme_options_page'
    ); 
}

在这个例子中,我们使用 add_submenu_page() 函数来创建一个新的菜单项。菜单的内部名称必须与上面注册选项页面时使用的名称相同。这样,WordPress 将会在 网站设置 菜单项下显示一个新的子菜单项。

结论

现在你已经知道如何使用 ACF 选项页面功能了。这可以是一个非常重要的功能,在管理网站内容和设置的过程中非常有帮助。当然,还有很多其他的 ACF 插件以及其它 WordPress 自定义字段插件或工具可以协助你在 WordPress 后台管理网站内容,你可以用它们来实现非常强大的功能。