最合适的回答,由SO网友:Frank P. Walentynowicz 整理而成
有很多方法可以做到这一点,无需第三方插件:
短代码
Cons: 必须创建短代码,并将其添加到所有帖子中。
子主题模板
Cons: 主题相关,必须修改正确的模板。
子主题函数。php
Cons: 主题相关。
mu插件中的插件
Cons: 没有一个
Pros: 不依赖主题,易于实现。
实施创建文件post-with-revisions.php
, 并将其放置在wp-content/mu-plugins
:
<?php
function wpse_single_post_with_revisions( $content ) {
// Check if we\'re inside the main loop in a single Post.
if ( is_singular() && in_the_loop() && is_main_query() ) {
$content .= \'<h2>Revisions</h2>\';
$revisions = wp_get_post_revisions();
foreach ( $revisions as $rev ) {
$date = $rev->post_date;
$author = get_author_name( $auth_id = $rev->post_author );
$content .= \'<h4>\' . $date . \' by \' . $author . \'</h4>\';
$content .= $rev->post_content;
}
}
return $content;
}
add_filter( \'the_content\', \'wpse_single_post_with_revisions\' );
Note: 修订版本将仅在单个帖子中可见,而不在存档中可见。
更新
为了更容易识别修订之间的更改,我们可以显示修订之间的差异,而不是显示修订的内容。修改后的代码如下:
<?php
function wpse_single_post_with_revisions( $content ) {
global $post;
// Check if we\'re inside the main loop in a single Post.
if ( is_singular() && in_the_loop() && is_main_query() ) {
$content .= \'<h2>Revisions</h2>\';
$revisions = wp_get_post_revisions();
$ids_to_compare = array();
foreach ( $revisions as $rev ) {
$date = $rev->post_date;
$author = get_author_name( $auth_id = $rev->post_author );
$id = $rev->ID;
array_push( $ids_to_compare, (int) $id );
$content .= \'<strong>ID: \' . $id .\' - \' . $date . \' by \' . $author . \'</strong><br>\';
//$content .= $rev->post_content;
}
$content .= \'<h2>Diffs</h2>\';
require \'wp-admin/includes/revision.php\';
for ( $i = 0; $i <= count( $ids_to_compare ) - 2; $i++ ) {
$diffs = wp_get_revision_ui_diff( $post, $ids_to_compare[$i], $ids_to_compare[$i + 1] );
$content .= \'<h3>\' . $ids_to_compare[$i] . \' to \' . $ids_to_compare[$i + 1] . \'</h3>\';
if ( is_array( $diffs ) ) {
foreach ( $diffs as $diff ) {
$content .= $diff[\'diff\'];
}
}
$content .= \'<hr>\';
}
}
return $content;
}
add_filter( \'the_content\', \'wpse_single_post_with_revisions\' );