Forma correcta de obtener el contenido de una página
Tengo que obtener el contenido de una página específica (como page(12))
Usé esto:
<?php $id=47; $post = get_page($id); echo $post->post_content; ?>
Funciona bien excepto por la compatibilidad con qtranslate que devuelve el texto en francés e inglés
Pero el loop funciona bien, devuelve solo la versión del idioma correcto
<?php if(have_posts()) : while(have_posts()) : the_post(); ?>
<div id="post">
<?php the_content(); ?>
</div> <!-- .post -->
Entonces la pregunta es... ¿CÓMO obtener el contenido de una página específica dentro del loop...?

Aquí está la solución que encontré y que funciona bien... el codex debería ser más específico sobre el apply_filter ... lo usé todo el tiempo
$id=47;
$post = get_page($id);
$content = apply_filters('the_content', $post->post_content);
echo $content;
¡Pero encontré un gran lugar para hacer preguntas (AQUÍ)! ¡gracias chicos!

Para aclarar:
Estás mezclando dos cosas aquí. qTranslate almacena los diferentes idiomas en la misma entrada. Si llamas a get_content()
, $post->content
o cualquier otra consulta directa, obtendrás todo el contenido con todos los idiomas diferentes de la base de datos.
Lo que hace qTranslate es crear un filtro (hook) que se adjunta al hook the_content
. Cuando alguien llama a the_content()
en una plantilla de página, todos los otros idiomas se filtran.
Así que tienes razón. Para filtrar los otros idiomas, debes aplicar el filtro the_content
a tu salida.

No se usa con frecuencia, pero personalmente me gusta la función get_post_field()
. Es compacta, pero flexible cuando necesitas obtener un campo específico.

Puedes usar get_page
, de esta manera:
