it-swarm.com.de

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