跳转到主要内容
高级搜索
搜索关键词
种类

精确匹配
标签搜索
日期选项
在此之后更新
在此之前更新
在此之后创建
在此之前创建

搜索结果

共找到了89个结果

插件基础知识

Wordpress Plugin Handbook 插件用户手册中文文档 插件基础知识

入门 最简单的来说,WordPress 插件是一个带有 WordPress 插件标头注释的 PHP 文件。强烈建议您创建一个目录来保存您的插件,以便将所有插件的文件整齐地组织在一个位置。 要开始创建新插件,请按照以下步骤操作。 导航到 WordPress 安装的 wp-content目录。打开插件目录。创建一个新目录并以插件命名(例如plugin-name)。打开新插件的目录。创建一个新的 PHP 文件(最好以您的插件命名该文件,例如plugin-name.php)。该过程在 Unix 命令行上如下所示: ...

标题要求

Wordpress Plugin Handbook 插件用户手册中文文档 插件基础知识

如入门中所述,主 PHP 文件应包含标头注释,告诉 WordPress 该文件是一个插件并提供有关该插件的信息。 最小字段 标头注释至少必须包含插件名称: /* * Plugin Name: YOUR PLUGIN NAME */ 标头字段 可用的标头字段: 插件名称:(必填)您的插件的名称,该名称将显示在 WordPress 管理中心的插件列表中。 插件URI:插件的主页,应该是唯一的URL,最好在您自己的网站上。这对于您的插件来说必须是唯一的。您不能在此处使用 WordPress.org ...

包括软件许可证

Wordpress Plugin Handbook 插件用户手册中文文档 插件基础知识

大多数 WordPress 插件都是在GPL下发布的,这与WordPress 本身使用的许可证相同 。但是,还有其他兼容选项可用。最好清楚地表明您的插件使用的许可证。 在“标头要求”部分中,我们简要提到了如何在插件标头注释中指示插件的许可证。另一种常见且鼓励的做法是在主插件文件顶部附近放置许可证块注释(与具有插件标头注释的文件相同)。 该许可证块注释通常如下所示: /* {Plugin Name} is free software: you can redistribute it and/or modify...

激活/停用挂钩

Wordpress Plugin Handbook 插件用户手册中文文档 插件基础知识

激活和停用挂钩提供了在激活或停用插件时执行操作的方法。 激活时,插件可以运行例程来添加重写规则、添加自定义数据库表或设置默认选项值。 在停用时,插件可以运行例程来删除临时数据,例如缓存和临时文件和目录。 停用挂钩有时会与卸载挂钩混淆。卸载挂钩最适合永久删除所有数据,例如删除插件选项和自定义表等。 激活 要设置激活挂钩,请使用register_activation_hook() 函数: register_activation_hook( __FILE__, 'pluginprefix_functi...

卸载方法

Wordpress Plugin Handbook 插件用户手册中文文档 插件基础知识

从站点卸载时,您的插件可能需要进行一些清理。 如果用户停用插件,然后单击 WordPress 管理员中的删除链接,则该插件将被视为已卸载。 卸载插件后,您需要清除特定于插件的所有插件选项和/或设置,和/或其他数据库实体(例如表)。 经验不足的开发人员有时会错误地使用停用挂钩来实现此目的。 此表说明了停用和卸载之间的差异。 设想 停用挂钩 卸载挂钩 刷新缓存/临时 是的 不 刷新固定链接 是的 不 从 {$wpdb ->prefix}_options中删除选项 不 是的 从wpdb中...

最佳实践

Wordpress Plugin Handbook 插件用户手册中文文档 插件基础知识

以下是一些帮助组织代码的最佳实践,使其能够与 WordPress 核心和其他 WordPress 插件一起良好运行。 避免命名冲突 当您的插件对变量、函数或类使用与另一个插件相同的名称时,就会发生命名冲突。 幸运的是,您可以使用以下方法来避免命名冲突。 程序编码方法 默认情况下,所有变量、函数和类都在全局命名空间中定义,这意味着您的插件可以覆盖另一个插件设置的变量、函数和类,反之亦然。在函数或类内部定义的变量不受此影响。 给所有东西加上前缀 所有全局可访问的代码都应以唯一标识符作为前缀。前缀可以防止其...

确定插件和内容目录

Wordpress Plugin Handbook 插件用户手册中文文档 插件基础知识

在编写 WordPress 插件时,您经常需要在整个 WordPress 安装过程中以及插件或主题中引用各种文件和文件夹。 WordPress 提供了多种函数来轻松确定给定文件或目录所在的位置。始终在插件中使用这些函数,而不是对 wp-content 目录进行硬编码引用或使用 WordPress 内部常量。 WordPress 允许用户将 wp-content 目录放置在任何他们想要的地方,并根据需要重命名它。永远不要假设插件将在 wp-content/plugins 中,上传将在 wp-content/upl...

清理数据

Wordpress Plugin Handbook 插件用户手册中文文档 插件安全

不受信任的数据来自许多来源(用户、第三方网站,甚至您自己的数据库!),所有这些数据在使用之前都需要进行检查。 请记住:即使管理员也是用户,用户也会有意或无意地输入错误的数据。你的工作就是保护他们免受伤害。 清理输入是保护/清理/过滤输入数据的过程。验证优于清理,因为验证更具体。但当“更具体”不可能时,消毒就是下一个最好的选择。   例子 假设我们有一个名为的输入字段title: <input id="title" type="text" name="title"> 我们不能在这里使用验证,因为文本字段...

验证数据

Wordpress Plugin Handbook 插件用户手册中文文档 插件安全

不受信任的数据来自许多来源(用户、第三方网站,甚至您自己的数据库!),所有这些数据在使用之前都需要进行检查。 请记住:即使管理员也是用户,用户也会有意或无意地输入错误的数据。你的工作就是保护他们免受伤害。 验证输入是根据预定义模式(或多个模式)测试数据的过程,并得出明确的结果:有效或无效。与清理相比,验证是一种更具体的方法,但两者都有其作用。 简单的验证示例: 检查必填字段是否未留空 检查输入的电话号码是否仅包含数字和标点符号 检查请求的字符串是否是五个有效选项之一 检查数量字段是否大于 0 应尽早...

转义数据

Wordpress Plugin Handbook 插件用户手册中文文档 插件安全

转义 输出是通过删除不需要的数据(例如格式错误的 HTML 或脚本标记)来保护输出数据的过程。此过程有助于在向最终用户呈现数据之前保护您的数据。  大多数 WordPress 函数都会正确准备输出数据,并且不需要额外的转义。 转义函数 WordPress 有许多辅助函数,可用于最常见的场景。 请密切注意每个函数的作用,因为有些函数会删除 HTML,而另一些函数则允许它。您必须使用最适合您所呼应的内容和上下文的功能。你总是在回声的时候想逃跑,而不是之前。 esc_html() – 在 HTML 元素包含正在...

随机数

Wordpress Plugin Handbook 插件用户手册中文文档 插件安全

随机数是“使用一次的数字”,有助于保护 URL 和表单免遭某些类型的滥用、恶意或其他形式的滥用。 从技术上讲,WordPress 随机数并不是严格意义上的数字;而是数字。它们是由数字和字母组成的哈希值。它们也不是只使用一次:它们的“寿命”有限,之后就会过期。在此时间段内,将为给定上下文中的给定用户生成相同的随机数。该操作的随机数对于该用户将保持不变,直到该随机数生命周期完成。 WordPress 的安全令牌被称为“随机数”(尽管与真正的随机数存在上述差异),因为它们的用途与随机数几乎相同。它们有助于防范包括 C...

用户角色和能力

Wordpress Plugin Handbook 插件用户手册中文文档 插件安全

用户角色和能力 如果您的插件允许用户提交数据(无论是在管理员端还是公共端),它应该检查用户功能。 用户角色和能力 创建高效安全层的最重要步骤是建立用户权限系统。WordPress 以用户角色和功能的形式提供这一点。 每个登录 WordPress 的用户都会根据其用户角色自动分配特定的用户功能。 用户角色只是一种表示用户属于哪个组的奇特方式。每个组都有一组特定的预定义功能。 例如,网站的主要用户将具有管理员的用户角色,而其他用户可能具有编辑者或作者等角色。您可以为一个角色分配多个用户,即一个网站可能有两个...

常见漏洞

Wordpress Plugin Handbook 插件用户手册中文文档 插件安全

常见漏洞 安全是一个不断变化的环境,漏洞会随着时间的推移而演变。以下讨论了您应该防范的常见漏洞,以及保护您的主题免遭利用的技术。 漏洞类型 SQL注入 当输入的值未正确清理时,就会发生 SQL 注入,从而可能执行输入数据中的任何 SQL 命令。为了防止这种情况,WordPress API 非常丰富,提供了诸如此类的功能, add_post_meta();而无需您通过 SQL ( INSERT INTO wp_postmeta…) 手动添加帖子元。 xkcd妈妈的功绩 强化主题抵御 SQL 注入的...

例子

Wordpress Plugin Handbook 插件用户手册中文文档 插件安全

例子 使用功能检查、数据验证、安全输入、安全输出和随机数的完整示例: /** * Generate a Delete link based on the homepage url. * * @param string $content Existing content. * * @return string|null */ function wporg_generate_delete_link( $content ) { // Run only for single post ...

laravel 5.5升级6.0

laravel

直接复制6.0 composer.json替换之前 { "name": "laravel/laravel", "type": "project", "description": "The Laravel Framework.", "keywords": [ "framework", "laravel" ], "license": "MIT", "require": { "php": "^7....

挂钩

Wordpress Plugin Handbook 插件用户手册中文文档 挂钩

挂钩是一段代码在特定的预定义位置交互/修改另一段代码的方式。它们构成了插件和主题如何与 WordPress Core 交互的基础,但 Core 本身也广泛使用它们。 有两种类型的钩子:Actions和Filters。要使用其中任何一个,您需要编写一个名为 a 的自定义函数Callback,然后将其注册到 WordPress 挂钩以执行特定操作或过滤器。 操作允许您添加数据或更改 WordPress 的运行方式。操作将在 WordPress 核心、插件和主题执行的特定点运行。操作的回调函数可以执行某种任务,例如向...

行动Actions

Wordpress Plugin Handbook 插件用户手册中文文档 挂钩

操作是两种类型的Hook之一。它们提供了一种在 WordPress 核心、插件和主题执行的特定点运行函数的方法。Action 的回调函数不会将任何内容返回到调用 Action 挂钩。它们与Filter相对应。这里回顾一下操作和过滤器之间的区别。 添加动作 添加动作的过程包括两个步骤: 创建回调函数 首先,创建一个回调函数。当它所挂接的操作运行时,该函数将运行。 回调函数就像普通函数一样:它应该有前缀,并且应该位于functions.php可调用的位置。它应该接受的参数将由您挂钩的操作定义;大多数钩子都有明...

过滤器filters

Wordpress Plugin Handbook 插件用户手册中文文档 挂钩

过滤器 过滤器是两种类型的Hook之一。 它们为函数提供了一种在 WordPress 核心、插件和主题执行期间修改数据的方法。它们与Actions相对应。 与Actions不同,过滤器旨在以隔离的方式工作,并且永远不应该产生副作用,例如影响全局变量和输出。过滤器期望有一些东西返回给他们。 添加过滤器 添加过滤器的过程包括两个步骤。 首先,您需要创建一个回调函数,该函数将在过滤器运行时调用。其次,您需要将回调函数添加到一个钩子中,该钩子将执行函数的调用。 您将使用add_filter() 函数,并传递至...

定制挂钩

Wordpress Plugin Handbook 插件用户手册中文文档 挂钩

一个重要但经常被忽视的做法是在插件中使用自定义挂钩,以便其他开发人员可以扩展和修改它。 自定义挂钩的创建和调用方式与 WordPress 核心挂钩相同。 创建一个钩子 要创建自定义挂钩,请使用do_action()for Actions和apply_filters()for Filters。 笔记:我们建议使用`apply_filters() ` 适用于输出到浏览器的任何文本。特别是在前端。 这使得插件更容易根据用户的需求进行修改。 添加回调到钩子 要将回调函数添加到自定义挂钩,请使用add_ac...

高级主题

Wordpress Plugin Handbook 插件用户手册中文文档 挂钩

删除操作和过滤器 有时您想从另一个插件、主题甚至 WordPress Core 已注册的挂钩中删除回调函数。 要从挂钩中删除回调函数,您需要调用remove_action()或 remove_filter(),具体取决于回调函数是作为操作还是过滤器添加。 remove_action()传递给/ 的参数 必须与传递给/注册它的remove_filter()参数相同,否则删除将不起作用。add_action()add_filter() 警报:要成功删除回调函数,您必须在注册回调函数后执行删除操作。执行顺序很重要...