web-dev-qa-db-ja.com

カスタム投稿タイプに関連付けられているすべての投稿を非公開にする

カスタム投稿タイプに属するすべての投稿をデフォルトのパスワード設定で「非公開」または「パスワードで保護」にするコードを自動的に追加する方法を知っている人はいますか。

特定のカスタム投稿タイプに属する投稿が変更されないように、新しい投稿を作成するか既存の投稿を編集することを特に参照しています...

3

投稿オブジェクトを挿入または保存する前に、投稿オブジェクトを変更するためにsave_postwp_insert_post、またはwp_insert_post_dataにフックすることができます。

save_postまたはwp_insert_postを使用して、コールバックは2つの引数を宣言する必要があり、2番目の入力変数としてpostオブジェクトを受け取ります。(そして、選択肢をカバーするように指示しています。

newpostsの特定の投稿タイプにデフォルト値を設定するには、default_contentにフックすることで小さなハックを使うことができます(default_titleも使えます)、 こちら

1つは保存/挿入時にpostオブジェクトを変更するためのもので、もう1つはデフォルトのpostオブジェクトの値を設定するためのものです。2つの必要な関数の例を示します。 TheDeadMedic).

add_action( 'save_post', 'check_type_values', 10, 2 );

function check_type_values( $post_id, $post ) {

    if( $post->post_type )
        switch( $post->post_type ) {
            case 'my_custom_type':
                $post->post_status = 'private';
                $post->post_password = ( '' == $post->post_password ) ? 'some_default_when_no_password' : $post->post_password;
            break;
        }   
    return;
}

add_filter( 'default_content', 'set_default_values', 10, 2 );

function set_default_values( $post_content, $post ) {

    if( $post->post_type )
        switch( $post->post_type ) {
            case 'my_custom_type':
                $post->post_status = 'private';
                $post->post_password = 'some_default_password';
            break;
        }
    return $post_content;
}

それが役立つことを願っています...

7
t31os
function force_type_private($post)
{
    if ($post['post_type'] != 'my_post_type' || $post['post_status'] == 'trash')
        return $post;

    $post['post_password'] = 'my password';
    $post['post_status'] = 'private';
    return $post;
}
add_filter('wp_insert_post_data', 'force_type_private');
3
TheDeadMedic

カスタム投稿タイプ用のテンプレートページを作成し、ユーザーがログインしているかどうかを確認し、ユーザーが特定のロールであるかどうかを確認することはできませんか。たとえば、管理者だけが閲覧できる投稿タイプが必要な場合を考えてみましょう。

<?php if ( is_user_logged_in() && is_admin() ) : if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
  <?php the_content(); ?>
<?php endwhile; endif; endif; ?>
0
hdavis84