WordPress 是一個令人驚嘆的平台,也是世界上最受歡迎的內容管理系統。起這個標題的原因是因為它的可擴展性。在本系列中,我們將學習過濾器 - 這是擴展 WordPress 的最佳方法之一。
此功能的基礎是掛鉤 - WordPress 的過濾器和操作。如果沒有它們,我們將無法利用 WordPress 真正的可擴展性。
在本系列中,我們將學習過濾器,這是擴展 WordPress 的最佳方法之一。這將是一個由七個部分組成的系列,重點關注:
核心中有數百個WordPress 過濾器,這50 個範例只是其中的一部分(約10%),因此如果您喜歡該系列並建議有關新過濾器的新範例,可能會有一個附錄.
無論如何,是時候介紹 WordPress 濾鏡了。讓我們開始吧!
在 Codex 中,篩選器定義如下:
篩選器是 WordPress 在執行過程中的某些時刻、在對資料採取某些動作之前傳遞資料的函數。過濾器位於資料庫和瀏覽器之間,以及瀏覽器和資料庫之間; WordPress 中的大多數輸入和輸出都會至少經過一個過濾器。 WordPress 預設會進行一些過濾,您的外掛可以添加自己的過濾。
因此,本質上,過濾器是在 WordPress 輸出網站資料之前對網站資料進行處理的函數。 過濾器是 WordPress 中的兩個掛鉤之一 - 另一種稱為操作,它是另一系列文章的主題。
儘管它看起來是一個複雜的主題,但過濾器(和操作)確實很容易理解。當我第一次遇到它們時,我也很害怕,但是在看到它們是多麼簡單之後,我只需透過檢查 Codex 或挖掘核心程式碼就可以了解數百個過濾器和操作。
您絕對應該了解數百個過濾器。但首先,您需要知道如何使用它們。
如我所說,使用 WordPress 濾鏡非常簡單。只需要了解一些基本功能,您需要了解每個過濾器的作用。 (說實話,最困難的部分是學習所有過濾器,但正如您可以想像的那樣,您無法一次學習每個過濾器 - 您需要在需要時才學習它們。)
在本節中,我們將討論四件事:
為了處理從過濾器傳遞的數據,您需要建立一個函數來定義它將如何處理數據,並將其掛接到過濾器。
假設我們正在建立一個外掛程式來刪除貼文標題中的元音。你不是說“刪除我的帖子標題中的元音”,而是說“將此函數(刪除元音)掛鉤到我的帖子標題的過濾器”。
複雜嗎?並不真地。在下面的範例中,我們將編寫從任何內容中刪除元音的函數程式碼:
<?php function remove_the_vowels( $title ) { $title = preg_replace( '/[aeiou]/i', '', $title ); return $title; } ?>
此函數採用 $title
字串,刪除元音並將其傳回。很容易,對吧?現在,讓我們將其提升到一個新的水平並將其連接到過濾器:
<?php function remove_the_vowels( $title ) { $title = preg_replace( '/[aeiou]/i', '', $title ); return $title; } add_filter( 'the_title', 'remove_the_vowels' ); ?>
注意到新功能了嗎?我們快速看一下add_filter()
:
<?php add_filter( $tag, $function_to_add, $priority, $accepted_args ); ?>
10
:如果設定較低,則函數會較早運行;如果設定較高,則函數會較晚運行。 1
。 我們也可以刪除附加到篩選器的函數。為此,我們使用一個名為 remove_filter()
的簡單函數。讓我們看看它是如何運作的:
<?php remove_filter( $tag, $function_to_remove, $priority ); ?>
參數與add_filter()
幾乎相同:
还有另一个名为 remove_all_filters()
的函数,它只有两个参数($tag
和 $priority
),您可以在其中设置过滤器的名称并设置优先级。顾名思义,它会删除所有与过滤器挂钩的函数。
想知道这些过滤器是如何创建的?有一个名为 apply_filters()
的特殊函数,它围绕核心代码创建数百个过滤器。当然,它可以在核心之外使用,这意味着我们也可以在插件和主题内创建过滤器。
让我们看看它是如何工作的:
<?php apply_filters( $tag, $value, $var1, $var2 /* ...and so on */ ); ?>
add_filter()
挂钩的过滤器函数修改的值。让我们考虑一个例子:假设您编写了一个仅返回 Peter Griffin 的名言的函数:
<?php function peter_griffin_quote() { $quote = "The bird is the word."; return $quote; } ?>如果您想让人们过滤此引用(并保留您的插件代码),您需要使用
apply_filters()
函数,如下所示:
<?php function peter_griffin_quote() { $quote = "The bird is the word."; return apply_filters( 'peter_griffin_quote', $quote ); } ?>这样,另一个开发人员使用您的插件就可以像这样处理您的函数数据:
<?php function change_the_quote( $quote ) { $quote = str_replace( 'bird', 'nerd', $quote ); return $quote; } add_filter( 'peter_griffin_quote', 'change_the_quote' ); ?>
现在,每次运行 peter_griffin_quote()
函数时,Peter 的引用都会略有更改,而无需开发人员编辑您的插件文件。小菜一碟!
如果您需要有关此主题的更多信息,您应该查看 Pippin Williamson 关于 Tuts+ Code 的精彩教程:“使用操作和过滤器编写可扩展插件”。在本教程中,您可以学习如何为您的插件或主题创建过滤器和操作。
您处理得越多,使用滤镜的乐趣就越多。它们有数百种,学习每一种都可以让您更接近成为一名 WordPress 大师。在本系列的下一部分中,我们将了解 10 个 WordPress 过滤器:
login_errors
comment_post_redirect
allowed_redirect_hosts
body_class
locale
sanitize_user
the_content
the_password_form
the_terms
wp_mail_from
我对这个系列感到非常兴奋,希望您能像我一样喜欢它。如果您认为您可以通过建议更多过滤器并要求更多示例来帮助我完成教程,请随时告诉我并通过下面的评论分享您的想法。
如果您喜欢本文中所读的内容,请不要忘记分享!
下一个教程见!
以上是WordPress 濾鏡簡介:50 個濾鏡的全面概述的詳細內容。更多資訊請關注PHP中文網其他相關文章!