wake-up-neo.com

Machen Sie ein ausgewähltes Bild erforderlich

Ist es möglich, den Benutzer zu zwingen, ein bestimmtes Bild für bestimmte Arten von Posts festzulegen? Ich habe zum Beispiel einen benutzerdefinierten Beitragstyp mm_photo und möchte eine Fehlermeldung anzeigen oder den Benutzer davon abhalten, Beiträge zu veröffentlichen oder zu aktualisieren, wenn kein Bildsatz vorhanden ist.

6
Adam

Ziemlich einfach mit jQuery und globalem $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
    }
}
2
Bainternet

Versuchen Sie die Antwort hier: https://stackoverflow.com/a/13575967

So wiederholen Sie den Code aus dieser Antwort:

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' );
1
Matty J

Dadurch wird der Beitrag nicht ohne das abgebildete Bild veröffentlicht.

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 );

Dadurch wird der Administrator darüber informiert, dass ein Funktionsbild erforderlich ist.

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;
0
Jahangeer Shams

wenn Sie möchten, dass alle Posts ein Bild mit einem bestimmten Merkmal haben, bevor sie veröffentlicht werden können, fügen Sie diesen Snippet zur functions.php Ihres WordPress-Themas hinzu. Wenn Sie versuchen, einen Beitrag ohne ausgewähltes Bild zu veröffentlichen, wird eine Administratormeldung angezeigt: „Sie müssen ausgewähltes Bild auswählen. Dein Beitrag wurde gespeichert, kann aber nicht veröffentlicht werden. "

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");
  }
}
0
jas