usando o_permalink para fazer um eco em um href

2

Estou tentando fazer um menu que preenche automaticamente a partir de um tipo de postagem personalizado que tenho e estou tendo alguns problemas para acertar Se alguém pudesse me apontar na direção certa, eu agradeceria muito. Aqui está o código. O PHP no <img src> está puxando as informações corretas e colocando-as no lugar certo, the_permalink obtém a URL correta, mas depois coloca a url acima da tag <li> em vez de na href.

<ul class="product-menu">
              <?php
              $products = new WP_Query(
                $args = array(
                  'post_type' => 'product',
                  'post_status' => 'publish',
                )
              );
              while ( $products->have_posts() ) {
                $products->the_post();
                $post_thumbnail_id = get_post_thumbnail_id();
                $post_thumbnail_url = wp_get_attachment_url( $post_thumbnail_id );
                echo 
                '<li>
                  <a href="' . the_permalink() . '">
                    <img src="' . $post_thumbnail_url . '" alt="' . get_the_title() . '">
                  </a>
                </li>';
              } 
              /* Restore original Post Data */
              wp_reset_postdata();?>
              </ul>
    
por mrben522 21.01.2016 / 15:34

2 respostas

5

the_permalink() imprime url imediatamente e não retorna nada, você deve usar get_the_permalink() function, que retorna URL atual da postagem.

    
por ScheRas 21.01.2016 / 15:46
3

Você estava usando o_permalink que echos fora, então você ecoou em um eco. Você quer processar o get_the_permalink para retornar a URL que pode ser exibida no código. A maioria das funções do wordpress iniciando com o_ diretamente ecoando na página, aquelas com get_ retornam o resultado.

Isso deve funcionar para você. Eu também usei o_post_thumbnail para trazer uma imagem em miniatura formatada no wordpress e atualizar o problema com o hyperlink.

<ul class="product-menu">
    <?php

    $args = array(
        'post_type' => 'product',
        'post_status' => 'publish',
    )

    $products = new WP_Query($args);

    while ( $products->have_posts() ) {
        $products->the_post();

        echo '<li><a href="' . get_the_permalink() . '">';

        // check if the post has a Post Thumbnail assigned to it.
        if ( has_post_thumbnail() ) {
            the_post_thumbnail();
        }

        echo '</a></li>';
    } 
    /* Restore original Post Data */
    wp_reset_postdata();

    ?>
</ul>
    
por Chris Morris 21.01.2016 / 15:47