wordpress主题的后台Settings API 和 Theme Customizer API开发部分

先看两个概念Settings APITheme Customizer API

Settings API和Theme Customizer API是WordPress提供的用于处理主题和插件设置的工具。它们分别用于不同的场景和目的,但都旨在简化在WordPress仪表板中添加设置和选项的过程。

Settings API

Settings API主要用于创建和管理WordPress仪表板中的设置页面。它提供了一种用于注册设置、添加设置区域和设置字段的方法,使开发人员能够轻松地向主题或插件中添加配置选项。

其关键的函数和概念

  • register_setting:
    用于注册设置,指定设置名称、选项组和一个用于对输入数据进行清理的回调函数。

  • add_settings_section:
    用于在设置页面上添加一个区域,将设置字段组织成逻辑部分。

  • add_settings_field:
    用于在设置页面上添加一个字段,例如文本输入框、复选框等。

例如:

function theme_settings_init() {register_setting('theme_options', 'theme_options', 'theme_options_sanitize');add_settings_section('general_settings', 'General Settings', 'general_settings_callback', 'theme-options');add_settings_field('custom_text_field', 'Custom Text Field', 'custom_text_field_callback', 'theme-options', 'general_settings');
}
add_action('admin_init', 'theme_settings_init');

Theme Customizer API

Theme Customizer API则允许用户在实时预览中调整主题设置。它提供了一个用户友好的界面,使用户能够直观地定制主题的外观和功能。

关键的函数和概念:

  • add_section:
    用于在定制器中添加一个新的部分,将相关设置组织在一起。

  • add_setting:
    用于添加一个设置,指定设置的名称、默认值和一个用于清理和验证输入的回调函数。

  • add_control:
    用于添加一个控件,用户可以通过它输入或选择值

function theme_customizer_settings($wp_customize) {$wp_customize->add_section('custom_text_section', array('title' => 'Custom Text Section','priority' => 30,));$wp_customize->add_setting('custom_text_setting', array('default' => '','sanitize_callback' => 'sanitize_text_field',));$wp_customize->add_control('custom_text_setting', array('label' => 'Custom Text Setting','section' => 'custom_text_section','type' => 'text',));
}
add_action('customize_register', 'theme_customizer_settings');

区别和用途

Settings API:
用于在WordPress仪表板中的“外观” -> “主题选项”下创建设置页面。
主要用于静态页面,用户需要保存设置后才能看到效果。
适用于那些不需要实时预览的设置。

Theme Customizer API:
用于实现实时主题定制,用户可以在定制器中直接预览并调整设置。
适用于需要实时反馈的设置,用户无需保存设置即可看到变化。
提供了更直观的用户体验,允许用户在实时中查看并调整主题的外观。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/194030.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java_基础——ArrayList

1.ArrayList构造方法和添加方法 方法名说明public ArrayList创建一个空的集合对象public boolean add(E e)将指定的元素追加到此集合的末尾public void add(int index,E element)在此集合的指定位置插入指定的元素 import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_O…

MySQL进阶_EXPLAIN重点字段解析

文章目录 第一节.准备1.1 版本信息1.2 准备 第二节.type2.1 system2.2 const2.3 eq_ref2.4 ref2.5 ref_or_null2.6 index_merge2.7 unique_subquery2.8 range2.9 index2.10 all 第三节. Extra3.1 No tables used3.2 No tables used3.3 Using where3.4 No matching min/max row3…

【数据结构高阶】AVL树

上期博客我们讲解了set/multiset/map/multimap的使用,下面我们来深入到底层,讲解其内部结构: 目录 一、AVL树的概念 二、AVL树的实现 2.1 节点的定义 2.2 数据的插入 2.2.1 平衡因子的调整 2.2.1.1 调整平衡因子的规律 2.2.2 子树的旋…

JavaEE 多线程

JavaEE 多线程 文章目录 JavaEE 多线程引子多线程1. 特性2. Thread类2.1 概念2.2 Thread的常见构造方法2.3 Thread的几个常见属性2.4 启动一个线程2.5 中断一个线程2.6 等待一个线程2.7 获取当前线程引用2.8 休眠当前线程 3. 线程状态 引子 当进入多线程这一块内容时&#xff…

2023-12-03 LeetCode每日一题(可获得的最大点数)

2023-12-03每日一题 一、题目编号 1423. 可获得的最大点数二、题目链接 点击跳转到题目位置 三、题目描述 几张卡牌 排成一行,每张卡牌都有一个对应的点数。点数由整数数组 cardPoints 给出。 每次行动,你可以从行的开头或者末尾拿一张卡牌&#x…

【Python/Java/C++三种语言】20天拿下华为OD笔试之【哈希表】2023B-单词接龙【欧弟算法】全网注释最详细分类最全的华为OD真题题解

文章目录 题目描述与示例题目描述输入描述输出描述示例一输入输出说明 示例二输入输出说明 解题思路代码PythonJavaC时空复杂度 华为OD算法/大厂面试高频题算法练习冲刺训练 题目描述与示例 题目描述 单词接龙的规则是: 可用于接龙的单词首字母必须要前一个单词的…

虚拟机扩容磁盘/dev/mapper/centos-root

虚拟机扩容磁盘/dev/mapper/centos-root 1. 在虚拟机管理界面增加磁盘大小或添加磁盘 2. 扩容操作 lsblk -l # 下面/dev/sdb 每个人的可能不同,有/dev/sda 或 /dev/sdc,根据实际更改 fdis /dev/sdb m n p 1 回车 回车 wfdisk -l pvdisplay pvcrea…

Vue.js中v-if 和 v-show 的区别

1、v-if: v-if 指令是 Vue.js 中的一个条件渲染指令。 当 v-if 的条件为 false 时,元素及其内容将从 DOM 中完全移除。 适用于你期望大部分时间条件为 false,或者当你希望通过完全移除元素来节省资源时。 2、v-show: v-show 指令同样也是一个条件渲染…

信息流广告行为兴趣定向底层逻辑算法

行为兴趣定向 1: 行为兴趣的背后是计划的数据 行为是用户在平台的动作:点赞、评论、分享、点击、下单、成交等,用户发生过的标签 兴趣不一定发生,我有打高尔夫的兴趣,但是从来没打过,因为穷 系统会根据用户的行为标…

C++STL中的string容器

string 容器基本概念 C 风格字符串 ( 以空字符结尾的字符数组 ) 太过复杂难于掌握,不适合大程序的开发, 所以 C 标准库定义了一种 string 类,定义在头文件。 String 和 c 风格字符串对比: u Char*是一个指针, …

【C++ Primer Plus学习记录】第5章编程练习

1.编写一个要求用户输入两个整数的程序。该程序将计算并输出这两个整数之间(包括这两个整数)所有整数的和。这里假设先输入较小的整数。例如,如果用户输入的是2和9,则程序将指出2~9之间所有整数的和为44。 //5.9 1 #if 1 #includ…

使用OpenMVS重建模型

1、数据格式转换 首先将生成的稠密点云以及图片信息转换成openmvs支持的.mvs文件。在openmvs_sample中的bin文件内打开终端 作者:舞曲的小水瓶 https://www.bilibili.com/read/cv25019877/ 出处:bilibili interfaceCOLMAP.exe -i D:\desktop\test\toy\…

【Linux服务器Java环境搭建】05 Node JS安装及环境变量配置

【Linux服务器Java环境搭建】01购买云服务器以及在服务器中安装Linux系统 【Linux服务器Java环境搭建】02 通过xftp和xshell远程连接云服务器 【Linux服务器Java环境搭建】03 Git工具安装 【Linux服务器Java环境搭建】04 JDK安装(JAVA环境安装) 【Linux服…

flink源码分析 - 命令行参数解析-CommandLineParser

flink版本: flink-1.11.2 调用位置: org.apache.flink.runtime.entrypoint.StandaloneSessionClusterEntrypoint#main 代码位置: flink核心命令行解析器: org.apache.flink.runtime.entrypoint.parser.CommandLineParser /** Licensed to the Apache Software Foundati…

基于OpenAPI工具包以及LSTM的CDN网络流量预测

基于LSTM的CDN网络流量预测 本案例是基于英特尔CDN以及英特尔 OpenAPI Intel Extension for TensorFlow* Intel oneAPIDPC Library 的网络流量预测,CDN是构建在现有网络基础之上的智能虚拟网络,目的是将源站内容分发至最接近用户的节点,使用…

unity学习笔记17

一、动画组件 Animation Animation组件是一种更传统的动画系统,它使用关键帧动画。你可以通过手动录制物体在时间轴上的变换来创建动画。 一些重要的属性: 1. 动画(Animation): 类型: Animation组件允许…

java为什么要设计8个基本数据类型的封装类型?

Java中的基本数据类型包括byte、short、int、long、float、double、boolean和char。然而,这些基本数据类型并非对象,他们只是简单的数值,无法调用方法。 为了能在Java这种面向对象的语言中更好地操作这些数值,Java设计了对应的8个…

换股解套策略

在股市中,投资者难免会遇到被套的情况。面对这种情况,如何进行换股策略以降低损失并寻求反弹的机会呢?本文将为您详细解析。 一、了解被套的原因 在进行换股策略之前,首先要了解被套的原因。一般来说,被套的原因有以下…

使用Prometheus监控Padavan路由器

Prometheus监控Padavan路由器 1、背景 近期在Synology(群辉)中安装一套Prometheus监控程序,目前已经监控Synology,然后家中有有路由器(Padavan)型号,也准备使用PrometheusGrafan进行监控。 ‍…

1、STM32F407 LED Demo

#ifndef、#define、#endif格式条件编译,作用是避免头文件内容比重复定义 main.c #include "stm32f4xx.h" #include "led.h" #include "delay.h" //CPU主时钟168MHz int main(void) {delay_init(168);LED_Init();while(1){GPIO_SetB…