it-swarm.com.de

Veröffentlichung des Posts verhindern, bevor ein ausgewähltes Bild festgelegt wird?

Wie der Titel schon sagt, möchte ich, dass ein Plugin/eine Funktion den Benutzer davon abhält/informiert, wenn er versucht, den Beitrag zu veröffentlichen, ohne das ausgewählte Bild einzustellen.

IRGENDEINE HILFE ???

5
BIALY

Die has_post_thumbnail() funktioniert für mich in WP Versionen 3.4.1 und anderen zuletzt. Aber in dieser Logik, weil der WP den Beitrag sogar mit exit oder wp_die() oder irgendetwasem veröffentlichen wird, um das PHP Skript zu beenden. Um zu verhindern, dass der Beitrag im Status "Veröffentlicht" bleibt, müssen Sie den Beitrag vor dem Beenden aktualisieren. Schauen Sie sich den folgenden Code an:

add_action('save_post', 'prevent_post_publishing', -1);
function prevent_post_publishing($post_id)
{
    $post = get_post($post_id);

    // You also add a post type verification here,
    // like $post->post_type == 'your_custom_post_type'
    if($post->post_status == 'publish' && !has_post_thumbnail($post_id)) {
        $post->post_status = 'draft';
        wp_update_post($post);

        $message = '<p>Please, add a thumbnail!</p>'
                 . '<p><a href="' . admin_url('post.php?post=' . $post_id . '&action=edit') . '">Go back and edit the post</a></p>';
        wp_die($message, 'Error - Missing thumbnail!');
    }               
}
4
Tiago Vergutz
<?php
// Something like that should help, but you'll have to play with it to get it working:
// inside your functions.php file
function wpse16372_prevent_publish()
{
    if ( ! is_admin() )
        return;

    // This should be ok, but should be tested:
    $post_id = $GLOBALS['post']->ID;
    echo '<pre>Test for post ID: '; print_r( $post_id ); echo '</pre>';// the actual test

    // has_post_thumbnail() doesn't work/exist on/for admin screens (see your error msg). You need to find another way to test if the post has a thumbnail. Maybe some Javascript?
    //if ( ! has_post_thumbnail( $post_id );
    if ( ! has_post_thumbnail( $post_id ) )
    {
        ?>
        <!-- // 
        <script language="javascript" type="text/javascript">
            alert( 'you have to use a featured image' );
        </script>
        // -->
        <?php
        exit; // abort
    }
}
add_action( 'save_post', 'wpse16372_prevent_publish', 100 );
?>
1
kaiser