cómo obtener contenido específico de una página
abajo está mi código que funciona bien pero el problema es que no viene con las etiquetas html.. como etc... no tengo idea por qué...
<?php $recent = new WP_Query("page_id=2"); while($recent->have_posts()) : $recent->the_post();?>
<?php
echo substr(get_the_excerpt(), 0,450);
?>
<a href="<?php the_permalink() ?>" rel="bookmark">
Más sobre nosotros
</a>
abajo hay otro código donde las etiquetas html y todo está bien.. pero no puedo entender cómo hacer que el enlace permanente funcione allí.. el enlace permanente que puse allí no funciona.
<?php
$my_id = 2;
$page_id = get_post($my_id);
$content = $page_id->post_content;
echo substr($content, 0, 450);
?>
<a href="<?php the_permalink() ?>" >Más sobre nosotros</a>
también cuál es la mejor manera de obtener contenido específico de una página como la forma de abajo
<h2>título</h2>
<div>imagen destacada </div>
<div>contenido</div>
<a href="<?php the_permalink() ?>" rel="bookmark">
En lugar de llamar a WP_Query()
, puedes usar get_post()
y "configurar" el global $post
. Probablemente esto sea un poco más eficiente que la respuesta de @tf, aunque las ideas son básicamente las mismas.
Ten en cuenta que, en ambos casos, deberías restablecer los datos de la publicación posteriormente.
/**
* Muestra el contenido de la publicación. Opcionalmente permite pasar un ID de publicación
* @uses the_content()
*
* @param int $id Opcional. ID de la publicación.
* @param string $more_link_text Opcional. Texto para cuando hay más contenido.
* @param bool $stripteaser Opcional. Eliminar el contenido previo al texto "más". Por defecto es falso.
*/
function sh_the_content_by_id( $post_id=0, $more_link_text = null, $stripteaser = false ){
global $post;
$post = &get_post($post_id);
setup_postdata( $post, $more_link_text, $stripteaser );
the_content();
wp_reset_postdata();
}

Bueno, la lógica no es mía, solo tomé lo que había en la pregunta y lo mejoré un poco. ;) Si solo se trata de un post en el que estás interesado, tienes razón, por supuesto, en usar get_post
. Sin embargo, como el bucle ya estaba ahí desde el principio, lo dejé así.

(get_)the_excerpt()
elimina las etiquetas HTML - por eso no tienes etiquetas HTML. ;)
Simplemente usa the_content()
en lugar de the_excerpt()
si deseas mostrar el contenido completo.
$recent = new WP_Query("page_id=2");
while ($recent->have_posts()) : $recent->the_post();
echo '<a href="'.get_the_permalink().'" rel="bookmark">Enlace permanente</a>';
the_content();
endwhile;
wp_reset_postdata();
En cuanto a la mejor manera de mostrar los datos de las publicaciones, deberías echar un vistazo a esto.
