>
>本文將重點(diǎn)介紹創(chuàng)建和激活插件,以及開發(fā)插件的管理功能。為了遵循本教程,您需要對(duì)PHP和WordPress的基本了解,並且對(duì)WordPress插件API具有工作知識(shí)。鑰匙要點(diǎn)
- >使用WordPress插件樣板通過結(jié)構(gòu)化的,有組織的方法加快開發(fā)過程,確保遵循最佳實(shí)踐。
- >通過使用設(shè)置API添加選項(xiàng)頁面來自定義插件,以允許用戶修改設(shè)置,例如通知的顯示位置以及後來考慮過時(shí)的幾天。 >通過註冊(cè)設(shè)置,添加設(shè)置字段以及使用樣板中提供的類和方法來處理這些設(shè)置值的保存和檢索。
- >通過為選項(xiàng)頁面創(chuàng)建一個(gè)乾淨(jìng),用戶友好的界面來優(yōu)化插件的面向式功能,並確保正確保存和顯示設(shè)置。 >
- >計(jì)劃進(jìn)一步增強(qiáng),例如代碼清理,國際化和更有選擇性的應(yīng)用程序邏輯,以完善插件的效率和用戶體驗(yàn)。
- 關(guān)於插件的 >
- >我們將開發(fā)一個(gè)簡單的插件,該插件將顯示自上次更新特定帖子以來的天數(shù)。我們還將為插件提供幾個(gè)簡單的自定義,從而允許用戶選擇特定數(shù)量,然後將其視為過時(shí)的帖子,以及在帖子內(nèi)容中的通知位置。 > 準(zhǔn)備樣板
>正如第一篇文章所述,我們可以下載樣板的新副本,進(jìn)行搜索並自行更換,或者我們可以使用非正式的WordPress插件樣板生成器來加快流程。讓我們將發(fā)電機(jī)用於插件。
>>前往WordPress插件生成器網(wǎng)站,並用適當(dāng)?shù)闹堤顚懕韱?。讓我們稱我們的插件為“過時(shí)的通知”。這是一個(gè)示例表格,其中填充了字段。
>>我正在為鏈接到官方存儲(chǔ)庫的插件URL使用一個(gè)假想的URL。不必太擔(dān)心這些東西,因?yàn)槲覀兪冀K可以在插件標(biāo)題中對(duì)其進(jìn)行修改。
>
單擊“構(gòu)建”按鈕,您應(yīng)該獲得WordPress插件板的不錯(cuò)的自定義副本。
>安裝和激活插件生成的郵政編碼將包含兩個(gè)預(yù)期的目錄,資產(chǎn)和中繼。我們不會(huì)在安裝插件時(shí)使用Symlink路由,因此請(qǐng)?jiān)诖鏅n中提取中繼文件夾並將其複製到WP-CONTENT/插件目錄中。
>
>我們?nèi)匀恍枰m當(dāng)?shù)刂孛员苊馀c其他插件的命名衝突,因此我們將把Trunk Directory重命名為過時(shí)的通用。如果您現(xiàn)在轉(zhuǎn)到WP-Admin中的“已安裝插件”部分,則可以肯定的是,您會(huì)看到插件已在已安裝但尚未激活的插件列表中。插件樣板生成器對(duì)插件描述沒有更改任何內(nèi)容,因此,如果要更改它,我們可以簡單地在主插件文件中編輯描述,在我們的情況下,eutated-notice.php。
>單擊“激活”以激活閃亮的新插件。您的WordPress網(wǎng)站上什麼都不會(huì)改變,因此請(qǐng)不要擔(dān)心激活插件後什麼都看不到。
>
>插件開發(fā)人員通常為用戶提供一種自定義插件設(shè)置的方法。這可以通過使用WordPress提供的設(shè)置API來實(shí)現(xiàn)。讓我們看看如何將自己的設(shè)置集成到插件中。
> 簡而言之,我們將允許用戶在帖子內(nèi)容之前或郵政內(nèi)容之後選擇通知出現(xiàn)的位置。就閾值的天數(shù)而言,用戶可以設(shè)置要過時(shí)的帖子之前的天數(shù)。使用這些信息,我們將動(dòng)態(tài)更改通知的類別,以便我們可以與仍然被認(rèn)為是新鮮的帖子進(jìn)行不同的樣式。
>讓我們開始添加一個(gè)插件的選項(xiàng)頁面。
>>在管理文件夾中打開class-of-notice-admin.php。我們需要修改此類,以允許我們?yōu)椴寮]冊(cè)設(shè)置頁面。將此公共方法添加到班級(jí)結(jié)束時(shí)。
>>要注意的一件事是,由於我們正在使用類來定義鉤子,因此我們需要以數(shù)組的形式傳遞一個(gè)數(shù)組(
<span>/** </span><span> * Add an options page under the Settings submenu </span><span> * </span><span> * <span>@since 1.0.0 </span></span><span> */ </span> <span>public function add_options_page() { </span> <span>$this->plugin_screen_hook_suffix = add_options_page( </span> <span>__( 'Outdated Notice Settings', 'outdated-notice' ), </span> <span>__( 'Outdated Notice', 'outdated-notice' ), </span> <span>'manage_options', </span> <span>$this->plugin_name, </span> <span>array( $this, 'display_options_page' ) </span> <span>); </span> <span>}</span>
應(yīng)該做到的。我們現(xiàn)在需要做的最後一件事是使用樣板中提供的加載程序類正確加載它。在Include文件夾中打開您的類列出的notice.php,並添加我們?cè)赿efine_admin_hooks方法內(nèi)定義的其他掛鉤。在我們的選項(xiàng)頁面上包含的適當(dāng)操作掛鉤是admin_menu,所以讓我們添加它。
><span>/** </span><span> * Render the options page for plugin </span><span> * </span><span> * <span>@since 1.0.0 </span></span><span> */ </span> <span>public function display_options_page() { </span> <span>include_once 'partials/outdated-notice-admin-display.php'; </span> <span>}</span>
>您現(xiàn)在應(yīng)該在設(shè)置下查看附加的“過時(shí)通知”子菜單。您可以通過訪問URL http:// /wp-admin/options-general.php?page=Outdated-notice。
>現(xiàn)在是一個(gè)空白頁,所以讓我們開始使用正確的標(biāo)記填充部分文件。註冊(cè),保存和檢索設(shè)置值
WordPress codex上的設(shè)置API頁面提供了一個(gè)很好的解釋,以說明如何註冊(cè)我們自己的設(shè)置,包括在選項(xiàng)頁面上顯示它們。
這是我們將要做的事情的細(xì)分:
用樣板加載器註冊(cè)鉤子
- 註冊(cè)設(shè)置部分
- 註冊(cè)兩個(gè)設(shè)置字段(閾值天數(shù)和文本位置)
- 註冊(cè)兩個(gè)設(shè)置
- 填充選項(xiàng)頁面
- 保存並重新播放顯示字段。
- >將鉤子註冊(cè)到樣板加載器
>
>要註冊(cè)設(shè)置部分,我們將需要使用register_setting函數(shù)。適當(dāng)?shù)膾煦^以初始化該函數(shù)是admin_Init。因此,首先,我們將在樣板加載器中添加另一個(gè)鉤子,以在我們的主樣本類的Define_admin_hooks方法中註冊(cè)我們的設(shè)置。為了使事情變得更簡單,並為我們的選項(xiàng)名稱提供了基本的命名空間,我們將在此類的頂部添加另一個(gè)私人變量。將此摘要放在Outed_notice_admin類的頂部。
從現(xiàn)在開始,我們將將此值預(yù)先為與我們的選項(xiàng)相關(guān)的任何事物。
><span>$this->loader->add_action( 'admin_menu', $plugin_admin, 'add_options_page' );</span>接下來是實(shí)際註冊(cè)“設(shè)置”部分,設(shè)置字段和各個(gè)設(shè)置。再次打開OUTED_NOTICE_ADMIN類,然後添加公共方法寄存器。
註冊(cè)設(shè)置部分
<span>$this->loader->add_action( 'admin_init', $plugin_admin, 'register_setting' );</span>>在public Register_setting方法中,我們將註冊(cè)設(shè)置部分。我不會(huì)對(duì)各種功能和API進(jìn)行太多的研究,因?yàn)榉ǖ湟呀?jīng)提供了足夠的信息來開始。由於我們的插件設(shè)置相對(duì)簡單,我們將僅註冊(cè)一個(gè)部分。
這個(gè)片段將允許我們使用add_settings_section函數(shù)為我們的選項(xiàng)頁面註冊(cè)一個(gè)“常規(guī)”部分。
<span>/** </span><span> * Add an options page under the Settings submenu </span><span> * </span><span> * <span>@since 1.0.0 </span></span><span> */ </span> <span>public function add_options_page() { </span> <span>$this->plugin_screen_hook_suffix = add_options_page( </span> <span>__( 'Outdated Notice Settings', 'outdated-notice' ), </span> <span>__( 'Outdated Notice', 'outdated-notice' ), </span> <span>'manage_options', </span> <span>$this->plugin_name, </span> <span>array( $this, 'display_options_page' ) </span> <span>); </span> <span>}</span>
請(qǐng)注意,我們正在用變量$ option_name預(yù)列出我們的部分名稱,以防止與其他插件發(fā)生衝突。回調(diào)可用於提供有關(guān)我們部分的其他信息,這正是我們想要的。
>我們將添加另一種公共方法,Outdated_notice_general_cb,該方法將呼應(yīng)有關(guān)本節(jié)的基本信息。
<span>/** </span><span> * Render the options page for plugin </span><span> * </span><span> * <span>@since 1.0.0 </span></span><span> */ </span> <span>public function display_options_page() { </span> <span>include_once 'partials/outdated-notice-admin-display.php'; </span> <span>}</span>註冊(cè)兩個(gè)設(shè)置字段(閾值天數(shù)和文本位置)
我們需要使用的設(shè)置API的下一部分是在選項(xiàng)頁面上註冊(cè)要渲染的實(shí)際字段。可以使用add_settings_field函數(shù)來實(shí)現(xiàn)這一點(diǎn)。
>我們將使用無線電按鈕進(jìn)行文本位置配置。這是通過將此代碼添加到我們擁有的register_setting函數(shù)中來完成的。
>我們需要確保Add_settings_field的第五個(gè)參數(shù)將指向我們之前註冊(cè)的正確設(shè)置部分,否則我們可能在我們的選項(xiàng)頁面上看不到字段。
<span>$this->loader->add_action( 'admin_menu', $plugin_admin, 'add_options_page' );</span>>這還尚未完成。我們需要提供回調(diào)功能,以呈現(xiàn)我們的無線電按鈕的實(shí)際標(biāo)記。在我們的OUTED_NOTICE_POINTION_CB函數(shù)中,我們需要包括此代碼塊:
可以使用普通文本輸入來配置一天閾值的第二個(gè)選項(xiàng)。因此,我們將註冊(cè)另一個(gè)設(shè)置字段:
<span>$this->loader->add_action( 'admin_init', $plugin_admin, 'register_setting' );</span>>再次,我們還需要提供一個(gè)回調(diào)函數(shù),該函數(shù)將呈現(xiàn)我們的文本字段。
註冊(cè)設(shè)置
<span>/** </span><span> * The options name to be used in this plugin </span><span> * </span><span> * <span>@since 1.0.0 </span></span><span> * <span>@access private </span></span><span> * <span>@var <span>string</span> $option_name Option name of this plugin </span></span><span> */ </span> <span>private $option_name = 'outdated_notice';</span>最後,我們需要註冊(cè)要使用的選項(xiàng)名稱,以便可以在WordPress中識(shí)別。由於我們使用了兩個(gè)不同的選項(xiàng)名稱,即OUTED_NOTICE_POINTION和OUTED_NOTICE_DAY,因此我們將使用register_setting函數(shù)進(jìn)行註冊(cè)。
<span>// Add a General section </span> <span>add_settings_section( </span> <span>$this->option_name . '_general', </span> <span>__( 'General', 'outdated-notice' ), </span> <span>array( $this, $this->option_name . '_general_cb' ), </span> <span>$this->plugin_name </span> <span>);</span>請(qǐng)注意,寄存器_setting函數(shù)的第三個(gè)參數(shù)是消毒回調(diào)。儘管它是可選的,但要確保在保存到數(shù)據(jù)庫之前對(duì)輸入值進(jìn)行消毒總是很有用的。
對(duì)於日期消費(fèi),我們將使用內(nèi)置的PHP功能,即在我們的情況下足夠。至於文本通知位置,我們將定義我們自己的消毒回調(diào)函數(shù),這將僅允許將某些值保存到數(shù)據(jù)庫中。當(dāng)處理僅限於特定值的選項(xiàng)時(shí),這一點(diǎn)特別有用,例如在這種情況下,我們只接受兩個(gè)值之前和之後的值,因此我們的消毒回調(diào)將需要確保,如果值不是一個(gè)值這些,它不會(huì)被保存到數(shù)據(jù)庫中。
這是一個(gè)簡單的消毒回調(diào)函數(shù),可以實(shí)現(xiàn)這一目標(biāo): >現(xiàn)在我們需要確保正確的頁面渲染器。由於我們正在使用WordPress的方式註冊(cè)我們的字段和設(shè)置,因此此任務(wù)特別簡單。 >打開admin/partials文件夾內(nèi)的過時(shí)的notice-admin-display.php。 以下是我們可以根據(jù)我們之前註冊(cè)的設(shè)置渲染選項(xiàng)頁面的方式。
>
>這意味著我們的表單正常工作,因此唯一需要完成的操作是在文本字段中顯示當(dāng)前值,並確保選中正確的廣播按鈕。
這是回調(diào)的更新片段。
這絕不是完整的。我們始終可以改善此插件的管理功能。我能想到的一些事情是: i18n(國際化)準(zhǔn)備就緒 - 儘管我們?cè)诓寮袕V泛使用__()和_e(),但我們並沒有真正完成實(shí)際的I18N過程。我不會(huì)在此處介紹此過程,因?yàn)樵撝黝}已經(jīng)在SitePoint上進(jìn)行了廣泛討論,例如在本文中。
>我們通過註冊(cè)相關(guān)設(shè)置創(chuàng)建了一個(gè)帶有基本管理功能的插件,並為用戶創(chuàng)建一個(gè)選項(xiàng)頁面以自定義我們的插件。在使用WordPress插件樣板的時(shí)間相對(duì)較短的時(shí)間內(nèi),我們實(shí)現(xiàn)了這一目標(biāo)而不損害代碼質(zhì)量,但仍按照WordPress建議的最佳實(shí)踐。
> > WordPress插件樣板,您可以在包含目錄中創(chuàng)建新類。這些類應(yīng)擴(kuò)展樣板提供的基類。然後,您可以將自己的方法添加到這些類中以實(shí)現(xiàn)所需的功能。您還可以根據(jù)需要修改現(xiàn)有的類和方法。 以將管理特定功能添加到插件中,您可以使用WordPress插入式Blookin Boblelplate的管理目錄中提供的類和方法。該目錄包括用於創(chuàng)建管理頁面,添加設(shè)置字段和處理表單提交的類。 以將公共面向公共功能添加到您的插件,您可以使用WordPress插件樣板的公共目錄中提供的類和方法。該目錄包括用於啟動(dòng)腳本和樣式的類,以及顯示面向公眾的內(nèi)容。 > 用於處理AJAX請(qǐng)求。這些類包括用於註冊(cè)AJAX操作,處理AJAX請(qǐng)求和發(fā)送AJAX響應(yīng)的方法。 <span>/**
</span><span> * Add an options page under the Settings submenu
</span><span> *
</span><span> * <span>@since 1.0.0
</span></span><span> */
</span> <span>public function add_options_page() {
</span>
<span>$this->plugin_screen_hook_suffix = add_options_page(
</span> <span>__( 'Outdated Notice Settings', 'outdated-notice' ),
</span> <span>__( 'Outdated Notice', 'outdated-notice' ),
</span> <span>'manage_options',
</span> <span>$this->plugin_name,
</span> <span>array( $this, 'display_options_page' )
</span> <span>);
</span>
<span>}</span>
填充選項(xiàng)頁面
在註冊(cè)所有相關(guān)設(shè)置之後,<span>/**
</span><span> * Render the options page for plugin
</span><span> *
</span><span> * <span>@since 1.0.0
</span></span><span> */
</span> <span>public function display_options_page() {
</span> <span>include_once 'partials/outdated-notice-admin-display.php';
</span> <span>}</span>
>與do_settings_sections and settings_fields功能的簡單組合,您的選項(xiàng)頁面完全可以立即完成。 保存並重新填充字段
>
>嘗試填充一些值並保存表單。您應(yīng)該收到“保存設(shè)置”的通知。但是沒有發(fā)生。讓我們嘗試對(duì)我們的兩個(gè)選項(xiàng)進(jìn)行var_dump。將其放在相關(guān)功能中。 <span>$this->loader->add_action( 'admin_menu', $plugin_admin, 'add_options_page' );</span>
<span>$this->loader->add_action( 'admin_init', $plugin_admin, 'register_setting' );</span>
>
<span>/**
</span><span> * The options name to be used in this plugin
</span><span> *
</span><span> * <span>@since 1.0.0
</span></span><span> * <span>@access private
</span></span><span> * <span>@var <span>string</span> $option_name Option name of this plugin
</span></span><span> */
</span> <span>private $option_name = 'outdated_notice';</span>
代碼清理 - WordPress插件樣板具有許多有用的功能,但是在我們的情況下,管理方面,CSS和JS加載是完全不必要的。我們隨時(shí)可以從我們的代碼庫中刪除它。
結(jié)論
> WordPress插件樣板是什麼,為什麼要使用它?它提供了一個(gè)易於理解和使用的清晰,一致的結(jié)構(gòu)。使用此樣板可以為您節(jié)省大量的時(shí)間和精力來設(shè)置插件的基本結(jié)構(gòu)。它還可以確保您的插件遵循WordPress編碼標(biāo)準(zhǔn)和最佳實(shí)踐,這可以幫助防止錯(cuò)誤和兼容性問題。 >
>我如何開始使用WordPress plugin Boilerplate?使用WordPress插件樣板,您首先需要從其GitHub存儲(chǔ)庫下載它。下載後,您可以重命名樣板的目錄和文件以匹配插件的名稱。然後,您可以通過在樣板的現(xiàn)有結(jié)構(gòu)中添加自己的自定義功能來開始開發(fā)插件。 >如何處理WordPress插件樣板中的插件設(shè)置?
>如何在插件中添加Admin特定功能?
>如何將面向公共的功能添加到我的插件中?
如何使用WordPress插入式插件國際化我的插件?
>
>在使用WordPress plubin Boblein blogin blogin Plate時(shí),我如何調(diào)試我的插件?插件樣板可以通過多種方式完成。一種常見的方法是在wp-config.php文件中使用wp_debug常數(shù)。這將顯示PHP錯(cuò)誤,通知和警告。您還可以使用可用於WordPress的各種調(diào)試插件,也可以使用PHP的內(nèi)置錯(cuò)誤記錄功能。
以上是WordPress插件樣板第2部分:開發(fā)插件的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級(jí)程式碼編輯軟體(SublimeText3)

熱門話題

使用WordPress測(cè)試環(huán)境是為了確保新功能、插件或主題在正式上線前的安全性和兼容性,避免影響真實(shí)網(wǎng)站。搭建測(cè)試環(huán)境的步驟包括:下載安裝本地服務(wù)器軟件(如LocalWP、XAMPP),創(chuàng)建站點(diǎn)、設(shè)置數(shù)據(jù)庫和管理員賬號(hào),安裝主題和插件進(jìn)行測(cè)試;複製正式網(wǎng)站到測(cè)試環(huán)境的方法是通過插件導(dǎo)出站點(diǎn)、導(dǎo)入測(cè)試環(huán)境並替換域名;使用時(shí)應(yīng)注意不使用真實(shí)用戶數(shù)據(jù)、定期清理無用數(shù)據(jù)、備份測(cè)試狀態(tài)、適時(shí)重置環(huán)境,並統(tǒng)一團(tuán)隊(duì)配置以減少差異問題。

使用Git管理WordPress項(xiàng)目時(shí),應(yīng)只將主題、自定義插件和配置文件納入版本控制;設(shè)置.gitignore文件以忽略上傳目錄、緩存和敏感配置;利用webhook或CI工具實(shí)現(xiàn)自動(dòng)部署並註意數(shù)據(jù)庫處理;採用兩分支策略(main/develop)進(jìn)行協(xié)作開發(fā)。這樣做可避免衝突、保障安全,並提升協(xié)作與部署效率。

創(chuàng)建Gutenberg塊的關(guān)鍵在於理解其基本結(jié)構(gòu)並正確連接前後端資源。 1.準(zhǔn)備開發(fā)環(huán)境:安裝本地WordPress、Node.js和@wordpress/scripts;2.使用PHP註冊(cè)塊並用JavaScript定義塊的編輯和顯示邏輯;3.通過npm構(gòu)建JS文件以使更改生效;4.遇到問題時(shí)檢查路徑、圖標(biāo)是否正確或使用實(shí)時(shí)監(jiān)聽構(gòu)建避免重複手動(dòng)編譯。按照這些步驟,可以逐步實(shí)現(xiàn)一個(gè)簡單的Gutenberg塊。

tosetupredirectsinwordpressingthe.htaccessfile,locateThEfileInyourSite'sRootDirectorectoryAndDrectRectrulesabovethe#beginWordPresssection.forbasic301redirects,USETHEETHEETERECTREFTATRECTATREDERTREFTATREDERTREFTATRECTRECTATRECTRECTATREDECT301/OLD-PAGEHTTPS:

在WordPress中,當(dāng)新增自定義文章類型或修改固定鏈接結(jié)構(gòu)後,需手動(dòng)刷新重寫規(guī)則,此時(shí)可通過代碼調(diào)用flush_rewrite_rules()函數(shù)實(shí)現(xiàn)。 1.可在主題或插件激活鉤子中添加該函數(shù)以自動(dòng)刷新;2.僅在必要時(shí)執(zhí)行一次,如添加CPT、分類法或修改鏈接結(jié)構(gòu)後;3.避免頻繁調(diào)用以免影響性能;4.多站點(diǎn)環(huán)境下需視情況為每個(gè)站點(diǎn)單獨(dú)刷新;5.某些託管環(huán)境可能限制規(guī)則保存。此外,訪問“設(shè)置>固定鏈接”頁麵點(diǎn)擊保存也可觸髮刷新,適合非自動(dòng)化場(chǎng)景。

UsingsMtpForWordPresseMailSimProvesDeliverabilitialComparedComparedTothEdeDefaultPhpMail()函數(shù).1.smtpauthenticateswithyouremailserver.2.somemomehostsdisablesablephpmail()

要實(shí)現(xiàn)響應(yīng)式WordPress主題設(shè)計(jì),首先要使用HTML5和移動(dòng)優(yōu)先的Meta標(biāo)籤,在header.php中添加viewport設(shè)置以確保移動(dòng)端正確顯示,並用HTML5結(jié)構(gòu)標(biāo)籤組織佈局;其次,利用CSS媒體查詢實(shí)現(xiàn)不同屏幕寬度下的樣式適配,按移動(dòng)優(yōu)先原則編寫樣式,常用斷點(diǎn)包括480px、768px和1024px;第三,彈性處理圖片和佈局,為圖片設(shè)置max-width:100%並使用Flexbox或Grid佈局替代固定寬度;最後,通過瀏覽器開發(fā)者工具和真實(shí)設(shè)備進(jìn)行充分測(cè)試,優(yōu)化加載性能,確保響應(yīng)

TOINTEGRATETHIRD-PARTYAPISINTOWORDPRESS,關(guān)注臺(tái)詞:1.SelectAutableabepianDobtainCredentialslikeapikeYsoroAuthtoKensByEnterRegisteringThemSecure.2.ChooseBeteBetB????eteBetB????eteBetB????etebetInpliCityOorcustimplicityOrcustomPliCoseTompliCoseTomploomcoseusionfunctionfunctionfunctibunitiacuciencipuity forfunigation。
