我有一个函数(它处理使用preg_replace_callback
要用上传目录的URL/路径替换图像URL,让我们调用它replaceImgUrls()
) 然后传递到add_filter(\'the_content\', \'replaceImgUrls\')
. 这很好用,但在我添加分页的帖子上(<!--nextpage-->
), 它阻止了这一切的发生;它无法拆分页面,但仍在内容底部显示正确数量的页码,您仍可以单击这些页码,但每个页面显示相同的内容(即帖子中的所有内容)。以下是我的函数,用于替换图像URL:
add_filter(\'the_content\', \'replaceImgURLS\');
function replaceImgURLS($content) {
global $post;
$content = $post->post_content;
$newContent = preg_replace_callback(
\'/<img.*src=[\\\'"]([^\\\'"]*)/i\',
function ($match) {
global $post;
$imgURL = $match[1];
$filename = basename($imgURL) . "-" . $post->ID . ".jpg"; // Create image file name
$upload_dir = wp_upload_dir();
$postMonth = mysql2date(\'m\', $post->post_date);
$postYear = mysql2date(\'Y\', $post->post_date);
$fileURL = $upload_dir[\'baseurl\'] . \'/\' . $postYear . "/" . $postMonth . "/" . $filename;
return \'<img src="\' . $fileURL;
},
$content
);
return $newContent;
}
当我从
functions.php
文件,分页将恢复并正常工作(即每个页面都被单独拆分)。我有
wp_link_pages()
在我的
content-single.php
模板文件。
感谢您的帮助:)
最合适的回答,由SO网友:Tom Oakley 整理而成
好吧,我想好了我该做什么@Rarst给了我一些指导,这对我有很大帮助,我认为他的想法(在他问题的评论中)会奏效,但我还没有实际测试过。无论如何,我通过添加$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
和中的变量已更改$content = $post->post_content;
到$content = get_the_content();
, 我通过了$paged
in作为变量,如下所示:$content = get_the_content($paged);
. 对我有效的最终代码如下所示:
add_filter(\'the_content\', \'replaceImgURLS\');
function replaceImgURLS($content) {
$post = get_post();
$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
$content = get_the_content($paged);
$newContent = preg_replace_callback(
\'/<img.*src=[\\\'"]([^\\\'"]*)/i\',
function ($match) {
global $post;
$imgURL = $match[1];
$filename = basename($imgURL) . "-" . $post->ID . ".jpg"; // Create image file name
$upload_dir = wp_upload_dir();
$postMonth = mysql2date(\'m\', $post->post_date);
$postYear = mysql2date(\'Y\', $post->post_date);
$fileURL = $upload_dir[\'baseurl\'] . \'/\' . $postYear . "/" . $postMonth . "/" . $filename;
return \'<img src="\' . $fileURL;
},
$content
);
return $newContent;
}
希望这能帮助任何通过谷歌或其他任何地方来到这里的人:)