Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

Dica: Post Mime Type

Olá!

preciso de uma funcionalidade em meu site, onde ao cadastrar um post type e add um pdf nele, seja gerado um link com texto ancora do Título do post com a URL do pdf anexado. Cheguei nesse código abaixo, que funciona.

<?php while( $loop->have_posts() ) {
        $loop->the_post();
        ?>

        <?php

        if ( $attachments = get_children( array(
            'post_type' => 'attachment',
            'post_mime_type' => array('application/doc','application/pdf'),
            'numberposts' => 1,
            'post_status' => null,
            'post_parent' => $post->ID
        )));
        foreach ($attachments as $attachment) {
            $urlPdf = wp_get_attachment_url( $attachment->ID );
        }
        ?>

        <li class="list-group-item">
        <a href="<?= $urlPdf; ?>" target="_blank">
        <?php the_title(); ?>
        </a>
        </li>

        <?php
    }
}    
?>

Porém, se criar um novo post e quiser adicionar um pdf que está na media galery, mas já foi anexado a outro post, ele redireciona para o index ao invés de pegar a url do pdf. Preciso que ele permita que eu adicione um mesmo pdf a mais de um post criado.

Alguém consegue me ajudar?

8 respostas

Alguém pode me ajudar?

alguém?

Alguém?

Por algum motivo o wp pega apenas o primeiro item do loop. Preciso que ele pegue os outros itens

Oi Renato, deixa eu ver se entendi, você precisa anexar um PDF a dois posts diferentes, é isso? Mas ao fazer isso, em um dos posts você consegue pegar a URL corretamente, mas no outro não. Tá certo isso?

Exatamente isso Wanderson Macedo!

solução!

Eu queria ver o código que associa o pdf ao post, mas veja aqui o seu código que pega a url, você vai um if em uma variável que tá usando no foreach abaixo. Eu particularmente acho estranho.

Veja também que pelo laço, você percorre todos os attachments pra pegar apenas o último e exibir. Seu PDF pode não ser o último attachment. Faz sentido?

Olha essa refatoração do seu código, nela eu mudo o if pra executar o laço apenas se o array não vier vazio e coloco o li dentro do foreach pra que sejam exibidos todos os attachments. Veja se faz sentido....

<?php while( $loop->have_posts() ) : $loop->the_post(); ?>

    <?php

        $attachments = get_children( array(
            'post_type' => 'attachment',
            'post_mime_type' => array('application/doc','application/pdf'),
            'numberposts' => 1,
            'post_status' => null,
            'post_parent' => $post->ID
        ));

        if ( count($attachments) ) :
            foreach ($attachments as $attachment):
                $urlPdf = wp_get_attachment_url( $attachment->ID );
        ?>

        <li class="list-group-item">
            <a href="<?= $urlPdf; ?>" target="_blank"> 
                <?php the_title(); ?>
            </a>
        </li>

    <?php endforeach; endif; ?>

<?php endwhile; ?>

Obrigado pela ajuda Wanderson! Esclareceu minha dúvida!