Pregunta

Quiero utilizar los valores devueltos a partir de dos llamadas a funciones en mi cadena HTML echo'ed.

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

Los siguientes trabajos finos:

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

... pero ¿cómo puedo obtener todos ellos en un solo estado de cuenta?

¿Fue útil?

Solución

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

Otros consejos

La razón por la que está teniendo problemas se debe a the_permalink () y the_title () no vuelven, se hacen eco. En lugar de utilizar get_permalink () y $ post-> POST_TITLE . Recuerde get_permalink () requiere el ID del mensaje ($ post-> ID) como parámetro. Sé que esto es irritante y contrario a la intuición, pero es cómo funciona Wordpress (ver la subjetividad en los comentarios a esta respuesta.)

Esto explica por qué el segundo ejemplo funciona en su pregunta inicial. Si se llama a la función que imprime desde dentro de una cadena, la salida de eco antes del final de la cadena.

Así que esto:

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

no funcionará como se espera. En su lugar, se dará salida a esto:

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

En PHP se puede utilizar tanto las comillas simples y dobles. Cuando estoy construyendo cadenas con HTML que generalmente comienzan la cadena con una comilla simple, de esa manera, puedo usar comillas dobles compatible con HTML dentro de la cadena sin escapar.

Así que para redondear hacia arriba, se vería algo como:

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

O, como ha solicitado originalmente, simplemente escapar de ellos, poner una barra invertida antes de la cita. Al igual que (las comillas simples se han eliminado)

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

Esto es, por supuesto, asumiendo que está llamando esto desde dentro del bucle , de lo contrario un poco más que esto sería necesario para conseguir el resultado deseado.

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

El uso de concatenación (línea no se rompe es necesario):

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

Uso <?php the_title_attribute() ?>. Muestra o devuelve el título de la entrada actual. Es un tanto duplica la funcionalidad de the_title (), pero ofrece una versión 'limpia' del título por extracción de etiquetas HTML y la conversión de ciertos caracteres (incluyendo las comillas) a su equivalente entidad de caracteres.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top