0
我需要在保存之前替換post_content內的代碼塊屏蔽。帖子內容是用markdown編寫的,推送到github然後是WordPress。WordPress的過濾器:`content_save_pre`掛鉤未能用`preg_replace`函數替換內容
我需要在保存到Wordpress之前將降價擊劍```js <some code> ```
替換爲:[js] <some code> [/js]
。
查看我的工作報告:https://repl.it/KDz2/1我的功能在Wordpress之外完美無缺。
Wordpress正在調用該函數,但由於某種原因,替換失敗。我知道這一點,因爲我可以得到一個簡單的str_replace
在Wordpress中正常工作。
問題;
preg_replace
無法在Wordpress過濾器中返回替換的內容。沒有錯誤拋出。爲什麼這是失敗的?
作爲參考,我functions.php文件包括:
add_filter('content_save_pre', 'markdown_code_highlight_fence');
function markdown_code_highlight_fence($content) {
$newContent = preg_replace('/^ *(`{3,}|~{3,}) *(\S+)? *\n([\s\S]+?)\s*\1 *(?:\n+|$)/m', '
[${2}]
$3
[\\\${2}]
', $content);
return $newContent;
}
也試過這個
function markdown_code_highlight_fence($content) {
$newContent = preg_replace_callback('/^ *(`{3,}|~{3,}) *(\S+)? *\n([\s\S]+?)\s*\1 *(?:\n+|$)/m', function($match){
$lang = $match[2] == '' ? 'js' : $match[2];
return '
['.$lang.']'
.' '.
$match[3]
.' '.
'[\\'.$lang.']'; }, $content);
return $newContent;
}