掌握WordPress Hooks :自定义和增强网站的综合指南

什么是 WordPress 钩子?

WordPress 的“钩子”让你能在不改变核心代码的情况下,灵活地增加或改变网站的功能。钩子就像是一种特殊的接口,安装在程序的关键位置,允许你插入自己的代码或修改已有代码。

掌握WordPress Hooks :自定义和增强网站的综合指南

钩子的目的

钩子是一种工具,它让你能够在不修改 WordPress 核心代码的情况下,自动执行特定的函数,从而添加或调整网站的功能。钩子分为两种类型:

  1. 动作钩子:这类钩子让你在 WordPress 的某个特定时刻执行代码,比如添加数据或改变网站的工作方式。操作钩子只执行任务,并不向用户返回任何结果。
  2. 过滤器钩子:这类钩子在 WordPress 处理数据时,允许你修改这些数据,并把修改后的数据返回给用户。

动作钩子用于“做事情”,比如添加新功能;过滤器钩子用于“改变事情”,比如调整已有内容的显示方式。使用钩子,你可以轻松地把自定义代码,例如 JavaScript,整合到你的网站中,使其更加个性化。

掌握WordPress Hooks :自定义和增强网站的综合指南

下面是将mytheme_script函数与wp_enqueue_scripts操作连接起来的操作挂钩示例。

function mytheme_script() 
{wp_enqueue_script('my-custom-script', get_template_directory_uri() . '/js/custom-script.js', array(), '1.0.0', true);
}}
add_action( 'wp_enqueue_scripts', 'mytheme_script' );

用 WordPress 钩子能让你自定义和增强网站功能,这需要一点 HTML 和 PHP 的基础知识。但不用担心,即使是 WordPress 新手也能比较容易地学会如何创建和使用这些钩子。

创建操作钩子: 操作钩子让你可以在网站的特定时刻自动执行代码。要创建一个操作钩子,你需要使用 add_action() 函数。这个函数通常被添加到你的主题的 functions.php 文件中。下面举个例子来说明如何添加一个操作钩子:

add_action( $target_hook, $the_name_of_function_you_want_to_use, $priority, $accepted_args );
掌握WordPress Hooks :自定义和增强网站的综合指南
function my_custom_function($arg1) {
    // 在这里编写你的功能代码
    echo "Function with argument: " . $arg1;
}

// 挂接函数到 'wp_loaded' 钩子,优先级为 5(较早执行),并接受一个参数
add_action('wp_loaded', 'my_custom_function', 5, 1);

my_custom_function 是我们定义的函数,它会在 WordPress 完全加载后自动执行。我们通过设置优先级为 5 来让它较早执行,同时这个函数被设置为接收一个参数。这种方法可以让你灵活地添加或修改网站的功能,而不需要改动核心代码。

创建过滤器钩子

在 WordPress 中,你可以使用 add_filter() 函数来创建过滤器钩子。这类钩子主要用于修改或过滤数据,比如调整文本输出或更改设置的值。

使用过滤器挂钩时,你会指定一个已存在的值来进行修改。这通常通过 apply_filters() 函数来完成,它在处理数据时调用你的自定义函数,让你可以修改或替换原始数据。

掌握WordPress Hooks :自定义和增强网站的综合指南

下面是一个添加到 WordPress 主题(比如 Twenty Twenty-Three 主题)的 functions.php 文件中的过滤器挂钩示例:

function modify_excerpt_length($length) {
    return 20;
}
// 使用 add_filter 函数将 'modify_excerpt_length' 函数挂接到 'excerpt_length' 钩子上
add_filter('excerpt_length', 'modify_excerpt_length');

在这个例子中,modify_excerpt_length 函数用来修改 WordPress 文章摘要的默认长度。我们通过 add_filter() 函数将这个自定义函数挂接到 excerpt_length 钩子上,这个钩子控制摘要的长度。当 WordPress 请求摘要长度时,它会使用你指定的新值(这里是 20 个字),从而替换原来的默认设置。

如果你发现自己需要取消或禁用之前通过 add_action()add_filter() 添加的操作和过滤器,你可以使用 remove_action()remove_filter() 函数来实现。下面是如何在 WordPress 中使用 remove_action() 的一个示例:

remove_action('example_action', 'example_function', 10);

在这个示例中,example_action 是之前添加的一个操作钩子,example_function 是挂接到这个钩子上的函数,而 10 是添加这个操作时使用的优先级。当调用 remove_action() 时,你需要指定相同的钩子名称、函数名称和优先级,以确保正确取消。

下面看下remove_filter()的一个例子:

remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
add_filter( 'tiny_mce_plugins', 'disable_emojis_tinymce' );
}

示例显示了如何停用wp_staticize_emoji_for_email,它将表情符号转换为静态图像。然后它用disable_emojis_tinymce替换它们,这将停用WordPress中的表情符号功能。

你可以使用remove_filter()命令按顺序禁用多个过滤器。这是一个例子:

function disable_emojis() {
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
remove_action( 'admin_print_styles', 'print_emoji_styles' );
remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
add_filter( 'tiny_mce_plugins', 'disable_emojis_tinymce' );
add_action( 'init', 'disable_emojis' );
}

上面的代码旨在消除WordPress中的表情符号功能。它说明用户可以在functions.php文件中嵌入多少个remove_filter命令没有限制。

实用的 WordPress Hook 示例

这个钩子的使用通常涉及到三个参数:$size$thumbnail_id$post。这里的 $size 是特色图像显示的尺寸,$thumbnail_id 是特色图像的ID,而 $post 则是相关的帖子对象。

$size = apply_filters( 'admin_post_thumbnail_size', $size, $thumbnail_id, $post );

你可以根据需要更改$size参数。例如,如果要将缩略图大小设置为 220 x 220 像素,使用以下代码:

$size = apply_filters( 'admin_post_thumbnail_size', 220, $thumbnail_id, $post);

还可以通过添加array()函数来设置缩略图的自定义大小。代码如下所示:

$size = apply_filters( 'admin_post_thumbnail_size', array(220, 400), $thumbnail_id, $post);

上面的array ()函数设置缩略图以 220 x 400 像素显示。

密码重置后

当用户重置密码时,此操作挂钩将被激活。该钩子由两个参数组成:$user$new_pass,如下所示:

do_action( 'after_password_reset', $user, $new_pass );

例如,WordPress 将此钩子与reset_password()函数结合使用。

定制加载组件

WordPress 的核心设计并不提倡直接修改或完全排除核心文件,如 wp-activate.phpwp-config-sample.phpwp-settings.php

掌握WordPress Hooks :自定义和增强网站的综合指南

需要注意customize_loaded_components不能添加到主题中,因为它仅在plugins_loaded阶段激活。

该钩子由两个参数组成:$components$this,如下所示:

$components = apply_filters( 'customize_loaded_components', array( 'widgets', 'nav_menus' ), $this );

$components参数是要加载的一批核心函数,而$this指的是现有类中的对象。

可以自定义array()函数来确定要排除哪些组件。上面的示例显示小部件和nav_menus被排除在核心进程之外。

结论

钩子的灵活性和强大功能使WordPress用户能够通过添加自定义功能或禁用特定进程来完善其网站,而无需更改任何核心文件。这使得WordPress钩子成为扩展和个性化网站的理想选择。

掌握WordPress Hooks :自定义和增强网站的综合指南

联系我们
文章看不懂?联系我们为您免费解答!免费助力个人,小企站点!
电话:020-2206-9892
QQ咨询:1025174874
邮件:info@361sale.com
工作时间:周一至周五,9:30-18:30,节假日休息
发布者:光子波动,转转请注明出处:https://www.361sale.com/7813/

(1)
上一篇 2024年 4月 13日 下午2:10
下一篇 2024年 4月 14日 下午2:25

相关推荐

  • 如何更改WordPress用户名:三种有效方法的详细指南

    更改 WordPress 用户名的原因? 出于安全考虑,使用像“admin”这样的通用WordPress用户名可能让你的网站面临安全风险,因为这些用户名很容易被猜到,很可能会被黑客破解与攻击。不过,可能还想更改WordPress用户名的其它原因包括: 登录wordpress仪表板,转到“用户”选项卡并选择“个人资料”时,将看到一个灰色字段,其中包含一条消息,…

    2024年 4月 14日 WordPress
    0035
  • 如何阻止搜索引擎为 WordPress 网站建立索引

    为什么要阻止搜索引擎对你的网站建立索引? 因为在某些情况下,不希望搜索引擎为其网站建立索引: 1. 编辑WordPress网站阻止搜索引擎建立索引 阻止搜索引擎对你的网站建立索引的最简单方法是阻止它们收录你的网站。你可以编辑WordPress 网站的robots.txt文件。以下是几种操作方法: 使用 WordPress 内置功能 编辑 WordPress …

    2024年 4月 11日 WordPress
    0019
  • 如何添加 WordPress 隐私政策页面以及为什么您应该拥有一个?

    每个 WordPress 网站都需要坚实的信任和透明度基础,而精心设计的隐私政策是实现这一目标的关键。无论您是运行个人博客还是电子商务网站,WordPress 隐私政策页面对于法律合规性和数据安全都至关重要。 什么是 WordPress 隐私政策页面? WordPress隐私政策页面是您WordPress网站上的一个特定页面,用于详细说明您网站如何收集、使用…

    2024年 4月 4日 WordPress
    0072
  • 为什么您的WordPress网站需要Akismet Anti-spam和Jetpack

    WordPress是一个强大的内容管理系统,但随着网站流量的增加,它也容易成为垃圾评论和安全攻击的目标。这就是为什么安装像Akismet Anti-spam和Jetpack这样的插件至关重要的原因。 Akismet Anti-spam: 防止垃圾评论 主要功能: 为什么安装它: 免费与付费: Jetpack 功能和作用: 通过使用这些工具,您可以显著提高Wo…

    2023年 12月 28日
    00127
  • WordPress 绑定多个域名教程,使多个域名可访问同一个WordPress站点

    教程思路:需要绑定的域名,我们先在宝塔建立一个新的网站,然后让这个网站使用A站的WordPress程序文件,最后把在程序文件里添加相应的代码达到,多域名访问同一站点的效果。 说明:以下例子: www.123.com 为初始网站 需要增加绑定的域名为 www.a.com www.b.com www.c.com等等 1,建立需要绑定的域名为新网站 首先,把需要绑…

    2024年 4月 16日 WordPress
    0017

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

联系我们

020-2206-9892

QQ咨询:1025174874

邮件:info@361sale.com

工作时间:周一至周五,9:30-18:30,节假日休息

客服微信