在 WordPress 中,使用鉤子(hooks)可以在特定的操作執行前或執行後執行自己的代碼,可以用於添加額外的功能或修改現有功能。常見的鉤子有兩種類型:動作鉤子(action hooks)和過濾器鉤子(filter hooks)。
下面是一個示例 PHP 文件,其中演示瞭如何使用 WordPress 鉤子執行 SQL 查詢和更新操作:
<?php
// 引入 WordPress 核心文件
require_once( dirname( __FILE__ ) . '/wp-load.php' );
// 動作鉤子示例
function my_custom_action_hook() {
global $wpdb;
// 執行 SQL 查詢
$table_name = $wpdb->prefix . 'posts';
$results = $wpdb->get_results( "SELECT * FROM $table_name" );
// 處理結果
foreach ( $results as $row ) {
$result = [];
$result = (array) $row; // 將標準對象轉換爲數組
// 在此處添加自定義代碼
// ...
// 更新數據
$data = array( 'post_title' => 'Hello World' );
$where = array( 'ID' => $result['ID'] );
$wpdb->update( $table_name, $data, $where );
}
}
add_action( 'wp_loaded', 'my_custom_action_hook' );
// 過濾器鉤子示例
function my_custom_filter_hook( $content ) {
global $wpdb;
// 執行 SQL 查詢
$table_name = $wpdb->prefix . 'posts';
$results = $wpdb->get_results( "SELECT * FROM $table_name" );
// 處理結果
foreach ( $results as $row ) {
$result = [];
$result = (array) $row; // 將標準對象轉換爲數組
// 在此處添加自定義代碼
// ...
// 更新數據
$data = array( 'post_content' => 'New Content' );
$where = array( 'ID' => $result['ID'] );
$wpdb->update( $table_name, $data, $where );
}
return $content;
}
add_filter( 'the_content', 'my_custom_filter_hook' );這個示例文件定義了兩個函數,分別用作動作鉤子和過濾器鉤子的回調函數。在 my_custom_action_hook 函數中,首先執行 SQL 查詢,然後處理結果並更新數據。該函數使用 add_action 函數將其添加到 wp_loaded 鉤子中,在 WordPress 加載完成後執行。
在 my_custom_filter_hook 函數中,同樣執行 SQL 查詢並處理結果,但這次將結果作爲參數傳遞給函數,用於修改輸出內容。該函數使用 add_filter 函數將其添加到 the_content 鉤子中,在 WordPress 輸出內容前執行。