カスタム投稿タイプに属するすべての投稿をデフォルトのパスワード設定で「非公開」または「パスワードで保護」にするコードを自動的に追加する方法を知っている人はいますか。
特定のカスタム投稿タイプに属する投稿が変更されないように、新しい投稿を作成するか既存の投稿を編集することを特に参照しています...
投稿オブジェクトを挿入または保存する前に、投稿オブジェクトを変更するためにsave_post
、wp_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;
}
それが役立つことを願っています...
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');
カスタム投稿タイプ用のテンプレートページを作成し、ユーザーがログインしているかどうかを確認し、ユーザーが特定のロールであるかどうかを確認することはできませんか。たとえば、管理者だけが閲覧できる投稿タイプが必要な場合を考えてみましょう。
<?php if ( is_user_logged_in() && is_admin() ) : if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php the_content(); ?>
<?php endwhile; endif; endif; ?>