web-dev-qa-db-fra.com

Où le code d'image en vedette est-il stocké dans WP?

Eh bien, je cherche le code source de ces deux petits conteneurs (backend PHP, interface HTML et JS utilisé pour attacher l'image):

Featured Image

Je souhaite créer une option de thème basée sur le code de l'image en vedette, mais je ne parviens pas à le trouver. Je suis sûr que cela se trouve quelque part dans le répertoire wp-admin, mais j'y ai passé très peu de temps et je n'ai rien trouvé.

Des indices?

2
Wordpressor

Le balisage de cette metabox est généré par _wp_post_thumbnail_html() , contenue dans wp-admin/includes/post.php .

0
Rarst
2
Otto

Voici un exemple complet pour avoir la méta-boîte Image en vedetteet travailler en dehors du contexte de la page wp-admin/post.php (depuis WordPress 4.6, voir wp-admin/includes/post.php ), qui est l'une des raisons possibles pour lesquelles vous pourriez vouloir savoir où est stocké le code:

/**
 * Featured image metabox
 *
 * @uses _wp_post_thumbnail_html
 *
 * @param int    $post_id   Post ID.
 * @param string $post_type Post type.
 */
function featured_image_metabox( $post_id, $post_type ) {

    // @see edit-form-advanced.php
    $thumbnail_support = current_theme_supports( 'post-thumbnails', $post_type ) && post_type_supports( $post_type, 'thumbnail' );

    if ( ! $thumbnail_support ||
        ! current_user_can( 'upload_files' ) ) {

        return;
    }

    // All meta boxes should be defined and added before the first do_meta_boxes() call (or potentially during the do_meta_boxes action).
    require_once ABSPATH . 'wp-admin/includes/meta-boxes.php';

    if ( ! $post_id ) {
        // New post.
        $post = get_default_post_to_edit( $post_type, true );

        // Fix PHP error. Add filter so get_post( $post ) returns our post!
        $post->filter = 'raw';
    } else {
        $post = get_post( $post_id );
    }

    $thumbnail_id = get_post_meta( $post->ID, '_thumbnail_id', true );

    if ( ! $thumbnail_id ) {

        $thumbnail_id = -1;
    }

    $post_type_object = get_post_type_object( $post_type );

    $title = $post_type_object->labels->featured_image;
    ?>
    <script>
        jQuery( document ).ready(function( e ) {
            wp.media.view.settings.post.id = <?php echo json_encode( $post->ID ); ?>;
            wp.media.view.settings.post.featuredImageId = <?php echo json_encode( $thumbnail_id ); ?>;
            wp.media.view.settings.post.nonce = <?php echo json_encode( wp_create_nonce( 'update-post_' . $post->ID ) ); ?>;
        });
    </script>
    <div id="poststuff" style="min-width: 320px;">
        <div id="postimagediv" class="postbox">
            <h2 class='hndle'><span><?php echo esc_html( $title ); ?></span></h2>
            <div class="inside">
            <?php
                echo _wp_post_thumbnail_html( $thumbnail_id, $post );
            ?>
            </div>
        </div>
    </div>
    <?php
}

Working example (Sensei LMS course wizard), in the wp-admin, but outside the post context

0
François J.