it-swarm-pt.tech

As legendas são armazenadas em algum lugar?

Em relação à minha pergunta anterior sobre legendas de shortcode , não me parece que o texto real de uma legenda é armazenado em outro local que não seja na postagem conteúdo dentro do próprio código de acesso.

Eu teria pensado que wp_get_attachment_metadata armazenaria as informações para um anexo, mas isso não acontece.

Estou errado? Ou o WordPress não armazena a legenda em algum lugar?

5
Dan Gayle

Sim, armazena a legenda em seu próprio lugar no banco de dados. Não posso citar o local exato, mas no Wordpress, "Anexos" são um tipo de postagem e ele armazena cada anexo como uma postagem. Para um tipo de postagem de anexo, ele trata a legenda da imagem como the_excerpt a descrição da imagem como the_content e o título da imagem como ... the_title.

3
matt

onde $post_id é a postagem atual, esse código exibirá todos os anexos de uma postagem e suas descrições e legendas de títulos

$q = new WP_Query( array(
    'post_parent' => $post_id,
    'post_type' => 'attachment'
));
if($q->have_posts()){
    while($q->have_posts()){
        $q->the_post();
        ?>
        <h3><?php the_title(); ?></h3>
        <?php

        if ( wp_attachment_is_image( $post->id ) ) {
            $att_image = wp_get_attachment_image_src( $post->id, "large");
            ?>
<img src="<?php echo $att_image[0];?>" width="<?php echo $att_image[1];?>" height="<?php echo $att_image[2];?>"  class="attachment-large" alt="<?php $post->post_excerpt; ?>" />
            <?php
        }

        // caption
        the_excerpt();

        // description
        the_content();
    }
}
wp_reset_query();

Anexos são todos os filhos da postagem à qual estão anexados, e você pode usá-lo para fazer seu próprio código de galeria personalizado. Eles também têm muitos dados em seus campos personalizados, como dimensões da imagem, dados EXIF, etc. Eles podem até ser comentados.

Você pode pegar o código do loop interno e colocá-lo em attachment.php no seu tema, apenas checar se eu não fiz nenhum erro de sintaxe antes de fazê-lo.

0
Tom J Nowell