检查帖子是否由不同于帖子作者的编辑者修改

时间:2012-12-10 作者:She Hulk

有没有办法检查用户X写的帖子是否被其他用户(例如管理员或编辑器)修改?

我想要实现的是:我有一个网站,在那里可以提交帖子以供发布(待定)。编辑可以按原样发布帖子,也可以在更正后发布帖子。如果进行了更正,我想以某种方式显示它(“这篇文章已经发布了更正”)。

对我来说,更好的做法是也显示更正(比如在wiki历史记录中,或者只是对更改的部分进行突出显示),但我猜wordpress不支持类似的功能。

1 个回复
SO网友:brasofilo

IMO,违约的唯一回扣Post Revisions 它还存储自动保存操作。但是,它确实有一个历史记录,记录了改变了什么,改变了谁,并且似乎满足了OP的要求。

如果需要对此默认元框应用某些更改,则应将其删除并recreated, 似乎没有可用的挂钩。也许一个简单的jQuery更容易删除Autosave 条目:

add_action( \'admin_head-post-new.php\', \'remove_autosave_revisions_wpse_75651\' );
add_action( \'admin_head-post.php\', \'remove_autosave_revisions_wpse_75651\' );

function remove_autosave_revisions_wpse_75651()
{
    ?>
    <script language="javascript" type="text/javascript">
    jQuery(document).ready(function($) 
    {
        $("ul.post-revisions").find("li:contains(\'Autosave\')").remove();
    });
    </script>
    <?php
}
如果要使用自定义元框,请检查以下示例:

add_action( \'add_meta_boxes\', \'add_custom_box_wpse_75651\' );
add_action( \'save_post\', \'save_postdata_wpse_75651\', 10, 2 );

function add_custom_box_wpse_75651() 
{
    add_meta_box( 
        \'sectionid_wpse_75651\',
        __( \'Post History\' ),
        \'inner_custom_box_wpse_75651\',
        \'post\' 
    );
}

function inner_custom_box_wpse_75651( $post ) 
{
    $history = get_post_meta( $post->ID, \'_history\', true );
    if( $history )
    {
        $reverse_history = array_reverse( $history );
        echo "
            <table class=\'widefat\'>
                <thead>
                    <tr>
                        <th style=\'width:20%\'>Modified by</th>
                        <th>Date</th>
                    </tr>
                </thead>
                <tfoot>
                    <tr>
                    <th style=\'width:20%\'>Modified by</th>
                    <th>Date</th>
                    </tr>
                </tfoot>
                <tbody>";

        foreach( $reverse_history as $h )
        {
            echo "
               <tr>
                  <td>
                    {$h[0]}
                  </td>
                  <td>
                    {$h[1]}
                 </td>
               </tr>            
            ";
        }

        echo "</tbody>
                    </table>
                ";
    }
}   

function save_postdata_wpse_75651( $post_id, $post_object ) 
{
    // Block auto-save
    if ( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE )  
        return;

    // Block revisions
    if ( \'revision\' == $post_object->post_type )
        return;

    // Check post type
    if ( \'post\' == $post_object->post_type ) 
    {
        global $current_user;
        $history = get_post_meta( $post_id, \'_history\', true );
        $history[] = array( $current_user->user_login, current_time( \'mysql\' ) );
        update_post_meta( $post_id, \'_history\', $history );
    }   
}
其结果是:

custom post revision meta box

结束

相关推荐

Author页面自定义查询WHERE Author[POST META VALUE]OR[POST META VALUE]

我目前正在尝试在authors页面(author.php)上执行自定义查询。我有两个自定义字段用于我要查询的帖子(post\\u摄影师和post\\u摄像师)。我试图为作者的个人资料做的是获取当前用户资料的所有帖子,其中用户是:这篇文章的作者OR 《邮报》摄影师OR 《邮报》的摄像师,所以每个人的简介MAY 有些帖子不是他们写的(他们是摄影师或摄像师)。下面的代码与我想要的很接近,但问题是它检索当前用户是作者的帖子AND 要么是后期摄影师OR 后期摄像师。它需要位于当前用户是作者的位置OR 后期摄影师OR