web-dev-qa-db-ja.com

テーマファイル内でカスタム投稿タイプのリビジョン制限を設定することは可能ですか?

特定の投稿タイプのリビジョン制限数を設定できるようにしたいです。私はそれのためのプラグインがあることを知っています、そして私はそれが "wp-config.php"ファイルを通して設定されることができることを知っています、しかし私の質問は:

プラグインがなくても、テーマフォルダの範囲外で他のファイルを変更する必要もなく、自分のテーマに実装できる簡単な短いコードはありますか。

2
Ben

wp_revisions_to_keep() 関数を見ました。 wp_revisions_to_keepの値をオーバーライドするWP_POST_REVISIONSという名前のフィルターがあります。

これはテストされていない例です(PHP 5.4 +)。

add_filter( 'wp_revisions_to_keep', function( $num, $post )
{
    // Post Types and Revision Numbers - Edit to your needs
    $config = [
        'post' => 10,
        'page' => 9,
        'cpt'  => 8
    ];

    // Get the current post type
    $post_type = get_post_type( $post );

    // Override the WP_POST_REVISIONS value
    if( isset( $config[$post_type] ) && is_int( $config[$post_type] ) )
        $num = $config[$post_type];

    return $num;
}, 10, 2 );

しかし、この種の設定はテーマに関連するものよりプラグインとしての方が理にかなっていると思います。

3
birgire