一部の種類の投稿でユーザーに機能のある画像の設定を強制することは可能ですか。例えば、私はカスタム投稿タイプmm_photo
を持っていて、特色のある画像セットがないときに何らかのエラーメッセージを表示したり、投稿を更新または更新することをどうにかしてブロックしたいです。
JQueryとグローバルな$typenow
を使うことはかなり簡単ですex:
add_action('admin_print_scripts-post.php', 'my_publish_admin_hook');
add_action('admin_print_scripts-post-new.php', 'my_publish_admin_hook');
function my_publish_admin_hook(){
global $typenow;
if (in_array($typenow, array('post','page','mm_photo '))){
?>
<script language="javascript" type="text/javascript">
jQuery(document).ready(function() {
jQuery('#post').submit(function() {
if (jQuery("#set-post-thumbnail").find('img').size() > 0) {
jQuery('#ajax-loading').hide();
jQuery('#publish').removeClass('button-primary-disabled');
return true;
}else{
alert("please set a featured image!!!");
jQuery('#ajax-loading').hide();
jQuery('#publish').removeClass('button-primary-disabled');
return false;
}
return false;
});
});
</script>
<?php
}
}
ここで答えを試してみてください: https://stackoverflow.com/a/13575967
その答えからコードを繰り返すには:
function featured_image_requirement() {
if(!has_post_thumbnail()) {
wp_die( 'You forgot to set the featured image. Click the back button on your browser and set it.' );
}
}
add_action( 'pre_post_update', 'featured_image_requirement' );
注目の画像がないと投稿は公開されません。
add_filter( 'wp_insert_post_data', function ( $data, $postarr ) {
$post_id = $postarr['ID'];
$post_status = $data['post_status'];
$original_post_status = $postarr['original_post_status'];
if ( $post_id && 'publish' === $post_status && 'publish' !== $original_post_status ) {
$post_type = get_post_type( $post_id );
if ( post_type_supports( $post_type, 'thumbnail' ) && ! has_post_thumbnail( $post_id )) {
$data['post_status'] = 'draft';
}
}
return $data;
}, 10, 2 );
これは管理者に通知されます機能イメージが必要です。
global $pagenow;
if ( $pagenow == 'post-new.php' || $pagenow == 'post.php' ) :
add_action( 'admin_notices', function () {
$post = get_post();
if ( 'publish' !== get_post_status( $post->ID ) && ! has_post_thumbnail( $post->ID ) ) { ?>
<div id="message" class="error">
<p> <strong>
<?php _e( 'Please set a Featured Image. This post cannot be published without one.'); ?>
</strong> </p>
</div>
<?php }
} );
endif;
公開する前に、すべての投稿に注目の画像があることを要求する場合は、このスニペットをワードプレステーマのfunctions.phpに追加します。おすすめの画像のない投稿を投稿しようとすると、「おすすめの画像を選択してください」という管理者メッセージが表示されます。あなたの投稿は保存されましたが、公開することはできません。」
add_action('save_post', 'heap_child_check_thumbnail');
add_action('admin_notices', 'heap_child_thumbnail_error');
function heap_child_check_thumbnail($post_id) {
// change to any custom post type
if (get_post_type($post_id) != 'post') {
return;
}
if (!has_post_thumbnail($post_id)) {
// set a transient to show the users an admin message
set_transient("has_post_thumbnail", "no");
// unhook this function so it doesn't loop infinitely
remove_action('save_post', 'heap_child_check_thumbnail');
// update the post set it to draft
wp_update_post(array('ID' => $post_id, 'post_status' => 'draft'));
add_action('save_post', 'heap_child_check_thumbnail');
}
else {
delete_transient("has_post_thumbnail");
}
}
function heap_child_thumbnail_error() {
if (get_transient("has_post_thumbnail") == "no") {
echo "<div id='message' class='error'><p><strong>You must select Featured Image. Your Post is saved but it can not be published.</strong></p></div>";
delete_transient("has_post_thumbnail");
}
}