Make featured image required

时间:2012-11-30 作者:Adam

是否可以强制用户在某些类型的帖子上设置特色图片。例如,我有自定义的帖子类型mm_photo 我想显示一些错误消息,或者在没有特色图像集的情况下,以某种方式阻止用户发布或更新帖子。

4 个回复
SO网友:Bainternet

使用jQuery和global相当简单$typenow 例如:

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
    }
}

SO网友:Matty J

请在此处尝试答案: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\' );

SO网友:jas

如果您希望在发布之前要求所有帖子都有一个特色图片,请将此片段添加到函数中。wordpress主题的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) != \'mm_photo\') {
    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");
  }
}

SO网友:Jahangeer Shams

这将不会发布没有特色图片的帖子。

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;

结束

相关推荐

Where do wordpress posts go?

我们的数据中心安装了wordpress,它管理公司网站中的所有内容。因此,我有一个在树状视图中可访问和可用的页面列表。我们也有兴趣将其作为公司网站的一部分发布到常规博客上。我不清楚如何做到这一点,但我注意到在最顶端的导航中有一个新的Posts选项。所以我创建了几个草稿帖子。然而,现在我找不到了。我找到了一段讨论保存草稿帖子的视频,但我的左手导航没有显示任何帖子链接。。。只有几页。所以我可以创建新的帖子,但不知道如何管理它们。非常感谢您的任何建议。