web-dev-qa-db-ja.com

サポートされているポストバージョンの最大数

WP 3.5.1をベースにしたニュースサイトを運営しています。編集者の中には、投稿編集ページのWYSIWYGエディタが一部の投稿に対して正しく機能していないと訴えている人もいます。編集ボタンは表示されません。

場合によっては、投稿を何度も更新する必要があります(500回以上など)。
それが原因かもしれませんか?
WP_POST_REVISIONSを10に設定すると、これらの投稿はどうなりますか?
古いバージョンは自動的に削除されますか、それとも残りますか?

1
mustafa

WP_POST_REVISIONSを固定数に設定する必要があります。そうでなければ、WordPressは無制限の数の改訂を続けます。関数wp_revisions_to_keep()を参照してください。

function wp_revisions_to_keep( $post ) {
    $num = WP_POST_REVISIONS;

    if ( true === $num )
        $num = -1;
    else
        $num = intval( $num );

    if ( ! post_type_supports( $post->post_type, 'revisions' ) )
        $num = 0;

    return (int) apply_filters( 'wp_revisions_to_keep', $num, $post );
}

その一方で…それほど多くの変更が必要な場合は、編集ワークフローに戻ってください。確かにこの数を減らす方法があります。

1
fuxia

対処方法:

WP_POST_REVISIONSを10に設定した場合、これらの投稿はどうなりますか?古いバージョンは自動的に削除されますか、それとも残りますか?

あなたはこの行動を起こします:

add_action( 'pre_post_update', 'wp_save_post_revision' );

デフォルトで/wp-includes/default-filters.phpに設定されています。

wp_save_post_revision()ソース をチェックすると、現在の投稿の残りのリビジョンが削除されることがわかります。

$delete = count($revisions) - WP_POST_REVISIONS;

指定されたpre_post_updateに対してフック$post_idがアクティブ化されている場合はwp_delete_post_revision()とともに使用されます。ただし、自動保存を実行している場合は除きます。

これはwp_save_post_revision()のソースからの関連部分です:

// WP_POST_REVISIONS = true (default), -1
if ( !is_numeric( WP_POST_REVISIONS ) || WP_POST_REVISIONS < 0 )
        return $return;

// all revisions and (possibly) one autosave
$revisions = wp_get_post_revisions( $post_id, array( 'order' => 'ASC' ) );

// WP_POST_REVISIONS = (int) (# of autosaves to save)
$delete = count($revisions) - WP_POST_REVISIONS;

if ( $delete < 1 )
        return $return;

$revisions = array_slice( $revisions, 0, $delete );

for ( $i = 0; isset($revisions[$i]); $i++ ) {
        if ( false !== strpos( $revisions[$i]->post_name, 'autosave' ) )
                continue;
        wp_delete_post_revision( $revisions[$i]->ID );
}
1
birgire