WordPress 自定義字段實際是 文章元數據,儲存在 wp_postmeta 表,結構極簡:meta_id、post_id、meta_key、meta_value。這種鍵值對設計賦予了極大靈活性:同一篇文章可擁有多個同名字段、任意插件/主題均可擴展數據、特色圖像、頁面模板等核心功能均基於此機制。
_thumbnail_id、_wp_page_template)在後台「自定義欄目」面板隱藏,the_meta() 也不輸出,屬於內部使用。_custom_key 避免用戶誤操作。add_post_meta()add_post_meta(int $post_id, string $meta_key, mixed $meta_value, bool $unique = false)
$unique = true:若同鍵已存在則不再添加(防止重複)。meta_id,失敗返回 false。update_post_meta()update_post_meta(int $post_id, string $meta_key, mixed $meta_value, mixed $prev_value = '')
add_post_meta)。$prev_value 指定時,僅更新值匹配的行(解決同鍵多值更新歧義)。get_post_meta()get_post_meta(int $post_id, string $key = '', bool $single = false)
$single = true:返回單一字符串值(取第一條)。$single = false(默認):返回數組,包含所有同鍵值(按添加順序)。$key 返回該文章所有字段的關聯數組。// 統計瀏覽(掛在 wp_head)
function my_statistics_visitors() {
if (!is_singular()) return;
global $post;
if (get_post($post->ID)->post_status !== 'publish') return;
$views = (int) get_post_meta($post->ID, 'views', true);
update_post_meta($post->ID, 'views', $views + 1)
|| add_post_meta($post->ID, 'views', 1, true);
}
add_action('wp_head', 'my_statistics_visitors');
// 前台獲取顯示
function my_get_views() {
global $post;
return number_format((int) get_post_meta($post->ID, 'views', true));
}
myplugin_),避免衝突。_ 開頭,減少用戶困擾。serialize/json_encode,讀取時反序列化。wp_options 或對象緩存。