首頁>Web>source

我希望為我的網站使用的自定義wordPress插件推送錯誤修複。

该插件註册具有各種屬性的簡碼。

但是,存在一个錯誤,其中一个屬性被錯誤地呼叫,因此它永远不会在HTML中呈現。

由於我有很多使用者在使用此插件,因此他们很可能明知在生产頁面的短代碼中設置了此屬性,這意味着推送修複程式可能匯致這些頁面隨後呈現錯誤。

我本質上是想執行一个將shortcode屬性的所有例項"重置"為預設值的指令碼( '' ,在這種情况下)。

我想正則表達式查詢以下所有例項:

\[shortcode_name(.*?)(attribute_name=['"]\S*['"])

並替換為:

[shortcode_name $1 attribute_name=''

wp_posts.post_content

我知道MySQL的旧版本(<8.x)没有本機 REGEXP_REPLACE() 函式,所以我想要的是与廣泛使用的MySQL版本和MariaDB之間相容的东西.我真的不確定如何使用PHP和/或$ wpdb類(或者,即使這是个好主意,也可以)来實現這一點。

根据PHPCS,"服務器管理員经常禁用PHP系統呼叫",所以我不想使用 shell_exec() 呼叫wP-CLI指令碼。

最新回復
  • 6月前
    1 #

    wpdb 没有內建的正則表達式替換功能.最簡單的解決方案是遍歷他们的所有帖子,檢查格式錯誤的短代碼的內容,並對帖子內容執行正則表達式替換.它的速度可能不如纯SQL解決方案快,但是不太容易出錯.啟用插件的更新版本後,您可以使其執行一次。

    您可以使用wP_Query遍歷所有帖子並檢查帖子內容,然後使用wp_update_post更改帖子內容。

    或者,如果您想確保使用者知道所做的更改,則可以檢查其所有帖子,以了解格式錯誤的短代碼例項,如果發現任何短代碼,則可以添加管理員通知,让他们知道 資料庫更新需要完成.然後,您可以添加建議以首先进行備份,並添加一个按钮以更改帖子以自動修複短代碼。

  • wordpress:使用函式中的引數重新定向訪問者(wordPress)
  • wordpress:如何仅顯示woocommerce商店頁面上庫存的變型?