Pergunta

Quero usar os valores retornados de duas chamadas de função na minha string html de eco.

<li><a href="the_permalink()">the_title()</a></li>

O seguinte funciona bem:

echo '<li><a href="';
echo the_permalink();
echo '">';
echo the_title();
echo '</a></li>';

... Mas como faço para obtê -los todos em uma única declaração?

Foi útil?

Solução

echo '<li><a href="', the_permalink(), '">', the_title(), '</a></li>';

Outras dicas

A razão pela qual você está tendo problemas é porque the_permalink () e o título() Não volte, eles ecoam. Em vez disso, use get_permalink () e $ post-> post_title. Lembrar get_permalink () requer o ID post ($ post-> id) como um parâmetro. Sei que isso é irritante e contra-intuitivo, mas é assim que o WordPress funciona (veja a subjetividade nos comentários dessa resposta.)

Isso explica por que o segundo exemplo funciona em sua pergunta inicial. Se você chama a função que imprime de dentro de uma string, o eco será lançado antes do final da string.

Então, é isso:

echo ' this should be before the link: '.the_permalink().' But it is not.';

não funcionará como esperado. Em vez disso, ele produzirá isto:

http://example.com this should be before the link: But it is not.

No PHP, você pode usar cotações únicas e duplas. Quando estou construindo strings com html, geralmente inicio a corda com uma única citação, dessa maneira, posso usar citações duplas compatíveis com HTML dentro da string sem escapar.

Então, para arredondá -lo, seria algo como:

echo '<li><a href="'.get_permalink($post->ID).'">'.$post->post_title.'</a></li>';

Ou, como você pediu originalmente, para simplesmente escapar deles, coloque uma barra de barriga antes da citação. Como assim (as citações únicas foram removidas)

echo "<li><a href=\"".get_permalink($post->ID)."\">".$post->post_title."</a></li>";

É claro que isso está assumindo que você está chamando isso de dentro do loop, caso contrário, um pouco mais do que isso seria necessário para obter a saída desejada.

printf( '<li><a href="%s">%s</a></li>', the_permalink(), the_title() );

Usando concatenação (quebras de linha não necessárias):

echo '<li><a href="'
 . the_permalink()
 . '">'
 . the_title()
 . '</a></li>';
echo "<li><a href=".the_permalink().">".the_title()."</a></li>";

Usar <?php the_title_attribute() ?>. Ele exibe ou retorna o título da postagem atual. Ele duplica um pouco a funcionalidade do_title (), mas fornece uma versão 'limpa' do título, removendo tags HTML e convertendo certos caracteres (incluindo citações) em sua entidade de personagem equivalente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top