WordPress:構建一個用戶登錄計數器插件
WordPress是當今網絡上最流行的內容管理系統(CMS)。福布斯的數據顯示,全球超過6000萬個網站都運行在WordPress之上,這足以證明其在CMS領域的領先地位。 WordPress的一大優勢在於其龐大的插件庫。想建立一個電子商務商店? WooCommerce可以滿足你。需要一個招聘門戶網站? WP Job Manager是你的選擇。
本教程將指導你創建一個插件,用於統計用戶登錄WordPress網站的次數,並在用戶列表頁面中的自定義列中顯示登錄統計信息。
大多數WordPress插件文件都是PHP文件,位於/wp-content/plugins/
目錄下。在本例中,文件名為wordpress-login-count.php
。我假設你熟悉使用FTP/SFTP/SCP或SSH連接到你的服務器。
如果你想跟著一起操作,請創建插件PHP文件wordpress-login-count.php
。本教程末尾將提供完整的插件下載鏈接。
首先,包含插件頭文件。沒有頭文件,WordPress將無法識別該插件。
<code class="language-php"><?php /* Plugin Name: WordPress 用户登录计数器 Plugin URI: http://sitepoint.com Description: 统计用户登录WordPress账户的次数。 Version: 1.0 Author: Agbonghama Collins Author URI: http://w3guy.com License: GPL2 */</code>
然後,添加PHP命名空間並創建插件類,如下所示:
<code class="language-php">namespace Sitepoint\WordPressPlugin; class Login_Counter { // ...</code>
插件所需的所有操作和過濾器鉤子都將進入init()
方法。
<code class="language-php">public function init() { add_action( 'wp_login', array( $this, 'count_user_login' ), 10, 2 ); add_filter( 'manage_users_columns', array( $this, 'add_stats_columns' ) ); add_action( 'manage_users_custom_column', array( $this, 'fill_stats_columns' ), 10, 3 ); }</code>
wp_login
操作鉤子在用戶登錄時由WordPress觸發,因此這是我們用來統計用戶登錄次數的合適鉤子。
下面的count_user_login()
函數進行計數。
<code class="language-php"> /** * 将用户登录计数保存到数据库。 * * @param string $user_login 用户名 * @param object $user WP_User 对象 */ public function count_user_login( $user_login, $user ) { if ( ! empty( get_user_meta( $user->ID, 'sp_login_count', true ) ) ) { $login_count = get_user_meta( $user->ID, 'sp_login_count', true ); update_user_meta( $user->ID, 'sp_login_count', ( (int) $login_count + 1 ) ); } else { update_user_meta( $user->ID, 'sp_login_count', 1 ); } }</code>
代碼說明:首先,我們檢查用戶是否有一個空的sp_login_count
元字段。如果為假,我們獲取之前保存的登錄計數並將其加1;如果為真,則表示用戶是第一次登錄。因此,值1將保存到用戶的元字段中。
manage_users_custom_column
過濾器用於向WordPress用戶列表頁面添加一個額外的列,該列將輸出用戶登錄的次數(參見上面的屏幕截圖)。
fill_stats_columns()
函數掛接到manage_users_custom_column
上,添加新列。
<code class="language-php"> /** * 使用值填充统计列。 * * @param string $empty * @param string $column_name * @param int $user_id * * @return string|void */ public function fill_stats_columns( $empty, $column_name, $user_id ) { if ( 'login_stat' == $column_name ) { if ( get_user_meta( $user_id, 'sp_login_count', true ) !== '' ) { $login_count = get_user_meta( $user_id, 'sp_login_count', true ); return "<strong>$login_count</strong>"; } else { return __( 'No record found.' ); } } return $empty; }</code>
代碼說明:第一個if
條件確保我們確實在login_stat
列中。下一個if
條件檢查用戶是否存在登錄計數。如果為真,則返回登錄計數;否則,返回文本“No record found”。
get_instance()
方法創建類的單例實例,然後調用init()
方法來註冊各種操作和過濾器鉤子。
最後,我們將調用get_instance()
方法來運行PHP類。
<code class="language-php">Login_Counter::get_instance();</code>
大功告成!我們完成了登錄計數器插件的編碼。
要進一步了解插件的構建方式並在你的WordPress網站中實現它,請從GitHub下載它。 (此處應添加GitHub鏈接)
我希望這將有助於你學習如何為WordPress開發插件。
請在評論中分享你的想法。
要在任何帖子的HTML代碼中使用當前用戶ID,你需要使用WordPress函數get_current_user_id()
。此函數將返回當前登錄用戶的ID。然後,你可以在HTML代碼中使用此ID。例如,你可以用它向用戶顯示個性化消息。以下是如何使用它的示例:
<code class="language-php"><?php /* Plugin Name: WordPress 用户登录计数器 Plugin URI: http://sitepoint.com Description: 统计用户登录WordPress账户的次数。 Version: 1.0 Author: Agbonghama Collins Author URI: http://w3guy.com License: GPL2 */</code>
wp_signon()
函數不起作用? wp_signon()
函數可能由於多種原因而無法工作。一個常見的原因是你在發送標頭後嘗試使用它。此函數必須在任何輸出發送到瀏覽器之前調用,否則它將無法工作。另一個原因可能是傳遞給函數的憑據不正確。確保用戶名和密碼正確,並且用戶存在於你的WordPress數據庫中。
要使用PHP創建登錄計數器,可以使用會話或cookie。當用戶登錄時,你可以遞增存儲在會話或cookie中的計數器。這是一個使用會話的簡單示例:
<code class="language-php">namespace Sitepoint\WordPressPlugin; class Login_Counter { // ...</code>
Counter Number Showcase插件是一個WordPress插件,允許你在你的網站上顯示計數器。你可以用它來顯示各種統計數據,例如用戶數、帖子數、評論數等等。該插件提供一個短代碼,你可以在你的帖子或頁面中使用它來顯示計數器。你可以使用插件的設置來自定義計數器的外觀。
要跟踪WordPress中的用戶登錄次數,可以使用wp_login
操作鉤子。每當用戶登錄時,都會觸發此鉤子。你可以用它來遞增存儲在用戶元數據中的計數器。以下是一個示例:
<code class="language-php">public function init() { add_action( 'wp_login', array( $this, 'count_user_login' ), 10, 2 ); add_filter( 'manage_users_columns', array( $this, 'add_stats_columns' ) ); add_action( 'manage_users_custom_column', array( $this, 'fill_stats_columns' ), 10, 3 ); }</code>
在這個例子中,每當用戶登錄時,都會調用track_user_logins()
函數。它從用戶的元數據中檢索當前的登錄計數,遞增它,然後使用新的計數更新用戶的元數據。
注意: 以上代碼示例已進行了一些調整,使其更符合WordPress編碼規範和可讀性。 實際的插件代碼可能需要更全面的錯誤處理和安全性考慮。 請務必在生產環境中仔細測試你的插件。
以上是構建WordPress用戶登錄計數器插件的詳細內容。更多資訊請關注PHP中文網其他相關文章!