web-dev-qa-db-ja.com

注目の画像を設定する前に投稿を公開しないようにしますか?

タイトルが言っているように、私は彼が注目の画像を設定せずに投稿を公開しようとしたときにプラグイン/関数がユーザーを防止/通知することを望んでいます。

どんな助け?

5
BIALY

has_post_thumbnail()は私のために、WPバージョン3.4.1そして最近の他のものでうまくいきます。しかし、このロジックでは、WPがexitwp_die()、あるいはPHPスクリプトを終了させるものでさえも投稿を公開するためです。投稿が公開ステータスのままになるのを防ぐために、終了する前に投稿を更新する必要があります。以下のコードを見てください。

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