Mostrando el contenido de una entrada individual
¿Cómo puedo mostrar el contenido de una entrada individual? Mi código:
if (is_single()){
get_header();
get_sidebar('left-article');
render_article();
get_footer();
}
En render_article
llamo a single_post_title()
para obtener el título de la entrada.
Sin embargo, no sé cómo obtener la hora y el contenido de la entrada ya que no encuentro ninguna función como single_post_content()
o single_post_time()
.

Crea un archivo llamado single.php. Este archivo automáticamente obtendrá todas tus entradas individuales. Para más información sobre la jerarquía de plantillas de WordPress, lee el Codex
Dentro de single.php, ejecuta el loop predeterminado y obtén header.php, sidebar.php y footer.php
<?php get_header(); ?> <?php if (have_posts()) : while (have_posts()) : the_post(); ?> <?php the_title(); ?> <?php the_content(); ?> <?php echo get_the_date(); ?> <?php endwhile; ?> <?php endif; ?> <?php get_sidebar(); ?> <?php get_footer(); ?>

puedes usar la siguiente función para obtener el contenido de una publicación de WordPress
<?php echo get_the_content(); ?>
y puedes usar la siguiente función para obtener el título
<?php echo get_the_title(); ?>
para obtener la fecha puedes usar esta función
<?php echo echo get_the_date(); ?>

function my_category_templates($single_template) {
global $post;
if ( in_category( 'Ofertas' )) { // Cambiado 'Offers' por 'Ofertas'
$single_template = dirname( __FILE__ ) . '/single-offer.php';
}
// Copia lo anterior para tus otras categorías
return $single_template;
}
add_filter( "single_template", "my_category_templates" );

Usa get_post() para obtener una publicación específica
get_post()
Ejemplo:
<?php $postData = get_post( $id, $output, $filter );
echo "<pre>";
print_r($postData);
?>
https://developer.wordpress.org/reference/functions/get_post/
https://www.tipsandtricks-hq.com/query-or-show-a-specific-post-in-wordpress-php-code-example-44

Esta es una pregunta antigua, pero ninguna de las respuestas aquí explica la forma correcta de hacer esto, por lo que quiero proporcionar una alternativa mejor. No es necesario usar un montón de funciones globales aleatorias o depender de un estado global nebuloso creado por este terrible "The Loop".
Si estás mostrando el contenido de una sola entrada, entonces necesitas crear un archivo llamado "single.php" dentro del directorio de tu tema. (https://developer.wordpress.org/themes/basics/template-hierarchy/) Este será la plantilla para tus entradas.
single.php
<?php
namespace mytheme; // Debes designar un espacio de nombres para tu tema para que no entre en conflicto con WordPress, su tema padre o cualquier plugin que puedas tener instalado.
defined('ABSPATH') || exit; // Salir si el archivo se está ejecutando directamente en lugar de por WordPress.
$post = get_queried_object(); // Este objeto contiene todos los datos sobre la entrada que necesitas. No necesitas usar un montón de funciones globales aleatorias o The Loop para obtener los datos de la entrada. Si quieres ver el contenido de este objeto, usa var_dump al depurar.
if (!$post) {
$wp_query->set_404();
status_header(404);
http_response_code(404);
exit;
}
get_header();
?>
<main>
<h1><?php echo strip_tags($post->post_title); ?></h1>
<?php if ($post->post_content) { ?>
<div>
<?php echo do_shortcode(apply_filters('the_content', $post->post_content)); ?>
</div>
<?php } ?>
</main>
<?php get_footer(); ?>
