Bài 09: Setting API trong WordPress

Setting API – 1 bộ công cụ được cung cấp bởi WordPress để giúp các nhà phát triển tạo các trang cấu hình và quản lý các tùy chọn cho các plugin và theme. Đây sẽ là nội dung bài 09 trong khoá học lập trình WordPress a-z của Hungshare.com.

Setting API

I. Setting API là gì?

Setting API trong WordPress là một tập hợp các hàm hỗ trợ việc tạo và quản lý các cài đặt trong website. Setting API cung cấp cho chúng ta các phương thức để tạo ra các phần tử trong Form, bao gồm các loại input, select và textarea.

Ngoài ra, Setting API cũng cung cấp các phương thức để chúng ta xử lý dữ liệu trước khi đưa vào bảng wp_option, bao gồm kiểm tra tính hợp lệ của dữ liệu, chuyển đổi dữ liệu đầu vào sang định dạng mong muốn và lưu dữ liệu vào bảng wp_options. Setting API cũng cung cấp các phương thức hiển thị các thông báo khi xử lý dữ liệu, giúp chúng ta dễ dàng quản lý các thông báo lỗi và thông báo cập nhật.

II. Các phương thức trong Setting API

Setting Register/UnregisterAdd Field/Section
register_setting()add_settings_field()
unregister_setting()add_settings_section()

Xem full: Xem full khoá học lập trình WordPress  

Options Form RenderingErrors
settings_fields()add_settings_error()
do_settings_sections()get_settings_errors()
do_settings_fields()settings_errors()

1. Tạo Setting page

Trước khi nghiên cứu Setting API chúng ta cần tạo 1 trang

public function __construct(){
   add_action( 'admin_menu', array($this, 'settingMenu'));
}
public function settingMenu() {
   $menu_slug = 'hungshare-my-setting';
   add_menu_page('My Setting title','My Setting', 'administrator',   $menu_slug, array($this,'settingPage'));
}
public function settingPage(){
   echo '<h2>My Setting</h2>';
}

2. Phương thức register_setting()

Phương thức này cũng giúp bạn tạo ra thêm các phần setting trong phần Setting Admin

register_setting($option_group,$option_name,$sanitize_callback);

Tham số:

$option_group - Tên của nhóm setting
$option_name - Giá trị này sẽ được đưa vào cột option_name trong bảng wp_options.
$sanitize_callback – Hàm dùng để xử lý dữ liệu trước khi lưu vào database.

Ví dụ

Tạo các phần setting trong phần Setting Admin

public function register_setting_and_fields(){
   register_setting('hungshare_options','hungshare_name',
   array($this,'validate_settings'));
}
public function validate_settings(){

}

3. Phương thức settings_fields()

Để tạo ra một số phần tử ẩn hỗ trợ cho Form

settings_fields( $option_group);

Tham số:

$option_group – Tên của tùy chọn
Khi chạy phương thức này sẽ tạo ra một số phần HTML:
<input type="hidden" name="option_page" value="zendvn_mp_options">
<input type="hidden" name="action" value="update">
<input type="hidden" id="_wpnonce" name="_wpnonce" value="3b450015f9">
<input type="hidden" name="_wp_http_referer"
value="/wp4/wp-admin/admin.php?page=zendvn-mp">

4. Phương thức add_settings_section()

Tạo các phân đoạn cho các vùng nhập liệu của Form

add_settings_section( $id, $title, $callback, $page );

Tham số:

$id - id của section.
$title - tên của section.
$callback –  hàm xử lý cho phần section khi cần thiết
$page –  Trang hoặc menu_slug mà chúng ta muốn section hiển thị

Ví dụ 

Tạo phân đoạn Main Setting trong Form

add_settings_section('hungshare_main_section','Main Settings',
array($this,'main_section_view'),$this->_menu_slug);
public function main_section_view(){

}

5. Phương thức do_settings_sections()

Để tạo ra một số phần tử ẩn hỗ trợ cho Form

do_settings_sections($page);

Tham số:

$page – Tên page hoặc menu slug
Khi chạy phương thức này sẽ tạo ra các phân đoạn (section) được đăng ký trong Form

6. Phương thức add_settings_field()

Để tạo ra các phần tử trong Form

add_settings_field($id, $title, $callback, $page, $section, $args);

Tham số:

$id - Giá trị của thuộc tính id trong phần tử HTML.
$title - Tiêu đề của phần tử.
$callback –  Hàm callback sử dụng tạo ra phần tử HTML
$page –  menu page hoặc menu slug của trang

Ví dụ

Tạo phần tử input trong Form

add_settings_field('zendvn_mp_new_title','Site title: ',
array($this,'new_title_input'),$this->_menu_slug,$mainSection);
public function new_title_input(){
   echo '<input name="zendvn_mp_name[zendvn_mp_new_title]"type="text" value="" />';
}

7. Phương thức add_settings_error()

Thêm thông báo error cho Setting page

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

Tham số:

$setting – menu slug của trang.
$code – giá trị này sẽ kết hợp với chuỗi 'setting-error-' để tạo ra thuộc tính id trong mã HTML.
$message –  Chuỗi thông báo lỗi
$type –  kiểu thông báo, có 2 giá trị error và updated

Ví dụ

Thêm thông báo khi lỗi phát sinh trong quá trình xử lý

$strError = 'Gia tri nay khong phu hop voi yeu cau';
$menu_slug = 'zendvn-mp-test-setting';
add_settings_error($this->_menu_slug, 'settings_updated',   $strError, 'error');

8. Phương thức get_settings_errors()

Lấy ta các thông báo lỗi đã đưa vào

get_settings_errors( $setting, $sanitize );

Tham số:

$setting – menu slug của trang.
$sanitize – chỉ có 2 giá trị true/false. Dùng để lọc sạch dữ liệu trước khi hiển thị thông báo

9. Phương thức settings_errors()

Hiển thị thông báo trên trang

settings_errors( $setting, $sanitize, $hide_on_update );

Tham số:

$setting – menu slug của trang.
$sanitize – chỉ có 2 giá trị true/false. Dùng để lọc sạch dữ liệu trước khi hiển thị thông báo
$hide_on_update – chỉ có 2 giá trị true/false. Nếu là true nó sẽ không hiển thị thông báo error

Ví dụ

Thêm thông báo khi lỗi phát sinh trong quá trình xử lý

<h2 class="nav-tab-wrapper" id="zendvn-mp-tabs">
<a class="nav-tab nav-tab-active" id="general-tab"href="#general">General</a>
<a class="nav-tab" id="home-tab" href="#home">Home</a>
<a class="nav-tab" id="post_types-tab" href="#post_types">Post Types</a>
<a class="nav-tab" id="taxonomies-tab" href="#taxonomies">Taxonomies</a>
<a class="nav-tab" id="archives-tab" href="#archives">Other</a>
</h2>
Đánh giá bài viết

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *