遲早都要面對的 WPBakery Page Builder 短碼問題
WPBakery Page Builder 是一款廣受歡迎的 WordPress 區塊編輯器。然而,隨著時間的推移,在 2021 年後的 Elementor 的強勢崛起,許多過去舊的採用 WPBakery Page Builder 佈景主題會面臨改版後功能失效、樣式跑版等等問題,在進行轉換改版時會碰到一個大鐵板,幾乎用區塊編輯器做的頁面與文章都會因為你停用外掛後,整個噴出大量的短碼無法解譯,會積累大量的 WPBakery Page Builder 產生的短碼,這些短碼可能會影響您網站的性能和內容的清晰度。在這篇文章中,我將分享一個有效的方法來清除這些不必要的短碼。
完整程式碼
首先,讓我們來看看如何使用自訂函數來移除這些短碼。以下是我們將要使用的程式碼:
function uni_remove_vc_shortcodes_from_database() {
// 取得所有文章
$args = array(
'post_type' => 'any',
'posts_per_page' => -1,
);
$posts = get_posts($args);
// 遍歷所有文章
foreach ($posts as $post) {
$content = $post->post_content;
$content = uni_remove_vc_shortcodes($content);
wp_update_post(array(
'ID' => $post->ID,
'post_content' => $content,
));
}
}
add_action('admin_init', 'uni_remove_vc_shortcodes_from_database');
此程式碼的運作原理如下:
- 透過
get_posts
函數取得所有文章。 - 遍歷每篇文章,並對其內容進行處理。
- 調用
uni_remove_vc_shortcodes
函數來清除短碼。 - 透過
wp_update_post
函數更新文章內容。
關鍵清除程式碼
接著再放入下面 uni_remove_vc_shortcodes
程式碼函數:
function uni_remove_vc_shortcodes($content) {
$pattern = '/\[\/?vc_[^\]]*]/';
$replacement = '';
$content = preg_replace($pattern, $replacement, $content);
return $content;
}
add_filter('the_content', 'uni_remove_vc_shortcodes', 999);
此函數使用正則表達式來搜尋和移除所有以 [vc_
和 [/vc_
開頭的短碼,並將其替換為空字串。
這個方法可以大幅提升您網站的載入速度和內容的清晰度。當您的網站不再依賴 WPBakery Page Builder 時,這種短碼清理方法尤其有用。此外,這個過程可以通過 add_action('admin_init', 'uni_remove_vc_shortcodes_from_database')
自動在後台初始化時執行,方便您管理和維護網站。切記!此程式碼只需要執行一次,如果要清除類似短碼變種,例如 Ronneby 這佈景主題,他是用 RC 開頭的,你就只需要變更 [vc_ 變成 [rc_ 以此類推,詳細正確具體一定要進入要清除的網站查看短碼怎麼命名使用的。