wordpress函数手册_WordPress主题开发手册

functions.php文件是您为 WordPress 主题添加功能的唯一位置。您可以在其中把自定义功能挂载到 WordPress 的核心功能上,使您的主题更加模块化、更具扩展性、功能更加丰富。

什么是functions.php?

functions.php文件的行为类似于 WordPress 插件,为 WordPress 网站添加一些特性和功能。您可以使用它来调用 WordPress 函数或定义自己的函数。

使用插件或functions.php可以产生相同的结果。如果我们正在为主题创建新功能,无论网站是什么样的, 最好将它们放在插件中。

使用 WordPress 插件或 functions.php 各有利弊:

使用 WordPress 插件:

需要特定的,唯一的标题文本;

存储在 wp-content/plugins 中

仅在激活时执行;

适用于所有主题

应该有一个特定目的 – 例如,提供搜索引擎优化功能或帮助备份。

使用 functions.php文件:

不需要唯一的标题文本;

存储在 wp-content/themes 中的主题子目录中;

仅在主题激活时执行;

仅适用于该主题(如果主题更改,则无法再使用这些功能)

可以有许多代码块,实现各种功能

每个主题都有自己的函数文件,但只有在激活主题的functions.php文件中的代码会被直接执行。如果您的主题已有 function.php 文件,我们可以添加代码到这个文件中。如果没有,我们需要先创建这个文件。

子主题可以拥有自己的 functions.php文件。向子主题的函数文件添加函数是修改父主题的无风险方法。当更新父主题时,您不必担心添加的新功能会消失。

虽然子主题的 functions.php在父主题的 functions.php之前加载,但它不会覆盖父主题的文件。子主题 functions.php可用于扩充或替换父主题的功能。同时, functions.php在加载任何插件文件后加载。

在 functions.php中,您可以:

使用 WordPress 钩子。例如,使用 excerpt_length过滤器,您可以更改文章摘录长度(默认为55个单词)。

使用 add_theme_support() 函数启用 WordPress 功能 。例如,启用缩略图,文章格式和导航菜单。

定义需要在主题的其他模板文件中重用的函数。

如果在 WordPress 插件和主题的 functions.php 中调用相同的函数或 filter,可能会产生意外的结果,极端情况下甚至会导致我们的网站无法访问。

示例

下面是一些示例,您可以在 functions.php 文件中使用这些示例来支持各种功能。如果您选择将其提交到 WordPress.org 主题目录,您可以在自己的主题中使用这些示例中的任意一个。

主题设置

许多主题功能应包含在“设置”功能中,该功能在激活主题时运行。如下所示,您可以将这些函数添加到自己主题的 functions.php文件中,以激活推荐的WordPress 功能。

使用主题名称为函数名加一个前缀非常重要。以下所有示例都 myfirsttheme_用作命名空间,您可以根据自己的主题名称进行定义。

要创建此初始函数,您需要新建一个名为 myfirsttheme_setup() 的函数 ,如下所示:

if ( ! function_exists( 'myfirsttheme_setup' ) ) :

/**

* 设置主题默认值,并注册一些 WordPress 功能

* 在 init 钩子之前设置这些函数非常重要,以确保这些功能不会失效

* @since MyFirstTheme 1.0

*/

function myfirsttheme_setup() {

注意:在上面的示例中,函数 myfirsttheme_setup 已打开但未关闭。一定要关闭我们的函数

自动 Feed 链接

您可以使用 add_theme_support() 函数为主题添加 automatic-feed-links 功能支持,默认情况下,该功能可以发布文章和评论 RSS Feed。这些 Feed 将在

自动显示 。

add_theme_support( 'automatic-feed-links' );

导航菜单

自定义导航菜单可以让用户在菜单管理面板中编辑和自定义菜单,为用户提供拖放界面来编辑主题中的各种菜单。

您可以使用 register_nav_menus() 函数在  functions.php 中设置多个菜单 。并使用 wp_nav_menu() 将它添加插入到主题中 ,如果您主题允许多个菜单,可以使用数组。虽然某些主题没有自定义导航菜单,但建议启用此功能以一变用户可以轻松的管理网站菜单。

register_nav_menus( array(

'primary' => __( 'Primary Menu', 'myfirsttheme' ),

'secondary' => __( 'Secondary Menu', 'myfirsttheme' )

) );

您定义的每个菜单都可以使用 wp_nav_menu() 调用,调用菜单式,指定菜单名称名称(如:primary)为该函数的 theme_location 参数值即可。

加载文本域

通过使主题中的字符串可翻译,主题可以被翻译成多种语言。为此,您必须使用load_theme_textdomain() 函数来设置翻译文件。有关使主题可用于翻译的更多信息,请阅读国际化部分。

load_theme_textdomain( 'myfirsttheme', get_template_directory() . '/languages' );

文章缩略图

文章缩略图和特色图片可让用户选择一个图像来代表他们的文章。您可以根据主题设计来决定如何显示它们。例如,您可以选择在存档页面中显示每个文章的文章缩略图。或者,您可能希望在主页上使用大幅特色图像。虽然并非每个主题都需要特色图片,但建议为主题添加缩略图支持。

add_theme_support( 'post-thumbnails' );

文章格式

文章格式允许用户以不同的方式格式化他们的帖子。这对于允许网站管理员根据文章内容选择不同的格式和模板很有用。 add_theme_support()也可以用来启用文章格式。

add_theme_support( 'post-formats', array ( 'aside', 'gallery', 'quote', 'image', 'video' ) );

初始设置示例

我们在这里为您整理了包含上面所有功能的 functions.php 代码,如下所示。已添加代码注释,以供将来使用。

如本示例代码底部所示,必须添加 add_action() 语句才可以确保已加载 myfirsttheme_setup 函数。

if ( ! function_exists( 'myfirsttheme_setup' ) ) :

/**

* 设置主题默认值并注册对各种WordPress功能的支持。

*

* 请注意,此函数已挂接到after_setup_theme挂钩中,该挂钩在init挂钩之前运行。

* 对于某些功能(例如指示支持帖子缩略图),init挂钩为时已晚。

*/

function myfirsttheme_setup() {

/**

* 使主题可用于翻译。

* 可以将翻译放在/ languages /目录中。

*/

load_theme_textdomain( 'myfirsttheme', get_template_directory() . '/languages' );

/**

* 将默认文章和评论RSS feed链接添加到

*/

add_theme_support( 'automatic-feed-links' );

/**

* 启用对文章缩略图和特色图片的支持。

*/

add_theme_support( 'post-thumbnails' );

/**

* 添加对两个自定义导航菜单的支持。

*/

register_nav_menus( array(

'primary' => __( 'Primary Menu', 'myfirsttheme' ),

'secondary' => __('Secondary Menu', 'myfirsttheme' )

) );

/**

* 启用对以下文章格式的支持:

* aside, gallery, quote, image, and video

*/

add_theme_support( 'post-formats', array ( 'aside', 'gallery', 'quote', 'image', 'video' ) );

}

endif; // myfirsttheme_setup

add_action( 'after_setup_theme', 'myfirsttheme_setup' );

内容宽度

您可以添加一个内容宽度变量到functions.php文件中,以确保网站内容或文件不会破坏网站布局。内容宽度设置了允许添加到您网站的任何内容的最大允许宽度,包括上传的图片。在下面的示例中,内容区域的最大宽度为 800 像素。网站上显示的内容不会超过这个宽度。

if ( ! isset ( $content_width) )

$content_width = 800;

其他功能

您还可以在functions.php 中包含其他常见功能 。下面是一些最常见。

侧边栏 (小工具区域)

自定义背景

添加编辑器样式

HTML5

标题标签

您的 functions.php 文件

如果您包含上面列出的所有函数,下面的代码这就是您主题的 functions.php代码。

/**

* MyFirstTheme 主题功能和定义

*

* @package MyFirstTheme

* @since MyFirstTheme 1.0

*/

/**

* 首先,设置最大宽度,这将限制上传的文件大小和嵌入内容的宽度

*/

if ( ! isset( $content_width ) )

$content_width = 800; /* 像素 */

if ( ! function_exists( 'myfirsttheme_setup' ) ) :

/**

* 设置主题默认值并注册对各种WordPress功能的支持。

*

* 请注意,此函数已挂接到after_setup_theme挂钩中,该挂钩在init挂钩之前运行。

* 对于某些功能(例如指示支持文章缩略图),init挂钩为时已晚。

*/

function myfirsttheme_setup() {

/**

* 使主题可用于翻译。

* 可以将翻译放在/ languages /目录中。

*/

load_theme_textdomain( 'myfirsttheme', get_template_directory() . '/languages' );

/**

* 将默认文章和评论RSS feed链接添加到

*/

add_theme_support( 'automatic-feed-links' );

/**

* 启用对文章缩略图和特色图片的支持。

*/

add_theme_support( 'post-thumbnails' );

/**

* 添加对两个自定义导航菜单的支持。

*/

register_nav_menus( array(

'primary' => __( 'Primary Menu', 'myfirsttheme' ),

'secondary' => __('Secondary Menu', 'myfirsttheme' )

) );

/**

* 启用对以下文章格式的支持:

* aside, gallery, quote, image, and video

*/

add_theme_support( 'post-formats', array ( 'aside', 'gallery', 'quote', 'image', 'video' ) );

}

endif; // myfirsttheme_setup

add_action( 'after_setup_theme', 'myfirsttheme_setup' );

这篇文章对您有用吗?

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

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

相关文章

python中_python中的一些用法总结

用python写了一个测试Demo,其中涉及到一些常用的用法,现在记录在这里,方便后续查阅: 1 python中全局变量的使用: 全局变量在所有程序的外部进行定义,再函数内部使用的时候分为两种情况,一种是只…

Android 通讯录学习笔记之——目标:调用系统通讯录的编辑功能

资料来源:http://www.eoeandroid.com/thread-37271-1-1.html 代码功能:调用系统自带的编辑联系人功能 代码片段 // 如下用法在ANADOIR 2.3.6上面会报 “Caused by: android.database.sqlite.SQLiteException: no such column: raw_contact_id:” 异常  …

[html] table中给td设置宽度无效怎么解决?

[html] table中给td设置宽度无效怎么解决? 默认是列宽度由单元格内容设定 table 添加css tableLayout :fixed;个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端…

使用 vue-qrcode 生成二维码

直接安装xkeshi/vue-qrcode包 "dependencies": {"xkeshi/vue-qrcode": "^1.0.0"}<template id"demo"><div class"container"><qrcode :value"qrcodeUrl" :options"{ size: 100 }">&l…

台达变频器485通讯接线图_台达变频器RS485通讯设置

变频器配置一、00(第79页)功能码 名称 设定范围00-02 参数重置(基底频率为50HZ) 900-03 开机显示画面选择 100-20 频率指令来源设定 100-21 运转指令来源设定 2二、09(第101页…

新版个人所得税计算python_最新个税计算 / 个税计算器 小程序 wepy 开发

根据最新税改后计算个人所得税的计算器。 如有其它疑惑&#xff0c;也欢迎提出任何修改意见。可以在主题下留言或者在小程序中点击联系在线客服或者加入qq群&#xff1a;869113926 1、扫一扫2、效果图这次开发遇到几个问题因此记录下来。 (1)、在开发微信小程序组件框架时&…

[html] 如何在页面上显示Emoji表情?

[html] 如何在页面上显示Emoji表情&#xff1f; 如果客户端发送了一个带条件的GET 请求且该请求已被允许&#xff0c;而文档的内容&#xff08;自上次访问以来或者根据请求的条件&#xff09;并没有改变&#xff0c;则服务器应当返回这个304状态码。简单的表达就是&#xff1a…

Google Analytics 搜索引擎来源

转载于:https://www.cnblogs.com/dabaopku/archive/2012/05/08/2490164.html

实现点击按钮复制文本(Clipboard包)

操作如下&#xff1a; npm install clipboard --save import Clipboard from clipboard; Vue.use(VueClipboard) <template id"demo"><div class"container"><!-- 文本内容 --><input type"text" v-model"message&quo…

明机器人孔尧是哪里人_明我创始人孔尧:未来办公,始于聚点

2018 全球人工智能与机器人峰会(CCF-GAIR)于日前在深圳召开&#xff0c;这是国内人工智能和机器人学术界、工业界及投资界三大领域的顶级交流盛会&#xff0c;旨在打造国内人工智能领域最具实力的跨界交流合作平台。本次盛会共吸引超过2500名业界人士参与&#xff0c;包括了行业…

python 图片 变清晰_python实现图片变亮或者变暗的方法

python实现图片变亮或者变暗的方法 这篇文章主要介绍了python实现图片变亮或者变暗的方法,涉及Python中Image模块操作图片的相关技巧,分享给大家供大家参考。具体实现方法如下&#xff1a; import Image # open an image file (.jpg or.png) you have in the working folder im…

[html] html标签的属性值是否可以省略引号?为什么?

[html] html标签的属性值是否可以省略引号&#xff1f;为什么&#xff1f; html5 可以用单引号、双引号、无引号。以前的版本不能无引号。个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与…

Weblogic EJB 学习笔记(2)精

6、ejb 引用 在ejb&#xff0d;jar.xml <ejb-ref> <description> an EJB reference to the Widget EJB(描述)</description> <ejb-ref-name>ejb/WidgetEJB</ejb-ref-name> <ejb-ref-type>session</ejb-ref-type> <home>com.dh…

Java写入的常用技巧

一.批量写入 Java写入大量数据到磁盘/数据库等其它第三方介质时,由于IO是比较耗费资源的操作,通常采用攒一批然后批量写入的模式 //通常构造一个缓存池,一个限制指标,可以是内存大小也可以是时间 ByteArrayOutputStream byteBuffer new ByteArrayOutputStream();int size 0;f…

mysql存储过程中怎么睡几秒_MySql的逻辑架构

Mysql在互联网企业中应用非常广泛&#xff0c;互联网企业的特点访问量非常大&#xff0c;怎么样优化mysql就成了摆在我们面前的一道难题。我们从mysql的逻辑架构说起&#xff1a;最上面一层是客户端的连接服务&#xff0c;主要完成客户端的连接处理&#xff0c;授权认证。在该层…

createprocess失败代码2_DevOPS | 基于sonarqube、jenkins和gitlab的持续集成代码检查

在持续集成过程中&#xff0c;针对代码的静态检查一般有两个时间点&#xff1a;一是提交代码的时候、二是提交merge request的时候&#xff0c;如果代码检查不通过&#xff0c;则可以直接拒绝此次代码提交或者合并。下面我们介绍下在常见的devops工具链sonarqube、jenkins和git…

[html] 你知道微信端的浏览器内核是什么吗?

[html] 你知道微信端的浏览器内核是什么吗&#xff1f; X5内核个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

用strtotime()和date()函数算出2019年9月的周日日期

strtotime---用于接收两个参数&#xff0c;第一个参数是格式化的日期数据如&#xff1a;date(Y-m-d),第二个参数有如7 day 函数版<?php $firstsunday strtotime(date(Y-m-01)); $thisy intval(date(m)); $diffdays0; $count 0; if (date(w,strtotime(date(Y-m-01)))!0) …

保存到本地_手把手教你将微信表情包保存到本地

筒子们晚上好&#xff01;微信不像QQ那样可以把微信包表情直接保存到本地&#xff0c;所以今天就来介绍两个把微信表情包保存到本地的方法&#xff01;(两种方法均需要用到电脑)方法一&#xff1a;使用微信公众号(不建议)工具&#xff1a;手机&#xff0c;电脑&#xff0c;微信…

redis集群 + 哨兵 + zookeeper_技术干货 | Redis的哨兵和集群

Redis全称REmote DIctionary Server&#xff0c;是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。它通常被称为数据结构服务器&#xff0c;因为值(value)可以是字符串(String), 哈希(…