web-dev-qa-db-fra.com

Vignette multimédia pour publication personnalisée dans le contenu de la publication

Certains médias sont ajoutés au message mais ne sont pas insérés dans le contenu du message. Comment insérer un média dans le contenu d'un post sans le faire manuellement. J'ai été en mesure de trouver le code suivant pour afficher le post en miniature attaché dans le contenu de l'article.

add_filter('the_content', 'put_thumbnail_in_posting');
function put_thumbnail_in_posting($content) {
    global $post;

    if ( has_post_thumbnail() && ( $post->post_type == 'post' ) ) {
        the_post_thumbnail( '', array( 'style' => 'float:left;margin:15px;' ) ); 
    }

    return $content;
}

La fonction ci-dessus est testée et fonctionne. Ma question est de savoir comment ajuster le code pour rechercher un type de publication personnalisé advert et insérer le média joint pour publier du contenu.

Et comment faire en sorte que la fonction apporte tous les médias attachés, pas seulement un?

J'ai déjà testé avec advert dans post-typeadvert et je n'ai pas fonctionné.

Merci!

2
Ibraheem

@ Ibraheem , vous n'avez pas à utiliser global $post, puisqu'il est global. Pour vérifier le type de publication, vous pouvez utiliser get_post_type() . L'utilisation de the_post_thumbnail n'est pas correctement implémentée dans ce cas, utilisez plutôt get_the_post_thumbnail . Remarque: vous ne pouvez pas utiliser has_post_thumbnail comme condition de tag si vous ne définissez pas l'image sélectionnée.

add_filter( 'the_content', 'put_thumbnail_in_posting' );
function put_thumbnail_in_posting( $content )
{
    if ( 'advert' == get_post_type() && has_post_thumbnail() )
    {
        $thumbnail = get_the_post_thumbnail( null, $size = '', array(
                'style' => 'float:left;margin:15px;'
        ) );

        $content = $thumbnail . $content; //thumbnail in top text
        /* $content = $content . $thumbnail; //thumbnail in bottom text  */
    }

    return $content;
}

Pour obtenir toutes les pièces jointes en post, vous pouvez mettre en œuvre de la manière suivante:

add_filter( 'the_content', 'put_thumbnail_in_posting' );
function put_thumbnail_in_posting( $content )
{
    if ( 'advert' == get_post_type() )
    {
        $args = array(
            'order'          => 'ASC',
            'post_mime_type' => 'image',
            'post_parent'    => get_the_ID(),
            'post_status'    => null,
            'post_type'      => 'attachment',
        );

        $attachments = get_children( $args );

        if ( $attachments ) {
            $thumbnails = '';
            foreach( $attachments as $attachment )
            {
                $thumbnails .= wp_get_attachment_image( $attachment->ID, $size = null, $icon = true, array(
                    'style' => 'float:left;margin:15px;'
                ) );
            }
            $content = $thumbnails . $content;
        }
    }
    return $content;
}

Vous pouvez ajouter une autre condition de balise telle que is_home, is_single, etc. et les arguments de pouce Tweak dans le code qui convient à vos besoins.

1
Jevuska