Cómo poner texto al final de NO todas las entradas (Nivel avanzado)

Tiempo de lectura aprox: 2 minutos, 5 segundos

Como prometí, hoy os cuento cómo poner texto al final de NO todas las entradas (Nivel avanzado); es la segunda parte de Cómo poner código al final de NO todas las entradas en WordPress.

Por supuesto, podemos añadir texto, código o cualquier otro elemento que seamos capaces de representar con html.

Aprovecho para recordar que esto es nivel avanzado, ya que tocaremos codificación html y php. Así que, vamos allá.

Cómo poner texto al final de NO todas las entradas (Nivel avanzado)

Antes de seguir, ¿has creado ya tu tema hijo? Si no es así, recuerda que tienes las instrucciones en: Cómo crear un tema hijo en WordPress.

Bien, ahora que ya lo tienes, podemos continuar.

Lo primero que hemos de localizar, es dónde queremos poner nuestro código. Debido a la estructura de WordPress, debe existir un archivo (script php) que controla la presentación de las entradas.

En este ejemplo, vamos a trabajar con un tema hijo del tema «Twentytwenty» que es el que viene pre configurado con la versión 5.3

En este tema, el archivo encargado es el /wp-content/themes/twentytwenty/singular.php y, al editar este archivo, vemos que el bucle que ejecuta para la presentación, llama a otro archivo del tema,

    while ( have_posts() ) {
        the_post();

        get_template_part( 'template-parts/content', get_post_type() );
    }

Así que toca editar ese archivo. Pero cuidado, vamos a trabajar en nuestro tema hijo, así que no debemos tocar los archivos del tema padre, lo que tenemos que hacer es copiar la estructura de directorios y editar la copia.

A ver, me explico, como el fichero que queremos modificar se encuentra en /wp-content/themes/twentytwenty/template-parts/content.php, debemos crear el directorio /template-parts/ y copiar allí el archivo content.php; de modo que tenemos un archivo que editaremos y cuya ruta o camino es: /wp-content/themes/tema-hijo/template-parts/content.php.

** Recuerda ** Al hacer un tema hijo, hay que mantener la estructura de directorios del tema padre, aunque no estén todos los archivos.

Una vez que tenemos el archivo, lo editamos para localizar dónde debemos incorporar nuestro código.

En este caso, el content.php tiene a partir de la línea 30:

        <div class="entry-content">

            <?php
            if ( is_search() || ! is_singular() && 'summary' === get_theme_mod( 'blog_content', 'full' ) ) {
                the_excerpt();
            } else {
                the_content( __( 'Continue reading', 'twentytwenty' ) );
            }
            ?>

        </div><!-- .entry-content -->

Que es efectivamente, el elemento «div» donde se escribe el contenido de la entrada, por lo que nuestro código debe ir a continuación.

Nuestro código debe escribir un texto, siempre que se cumpla la condición de que la entrada tiene como categoría, «receta de navidad».

Aprovechamos un código de WordPress para ver las categorías que tiene la entrada y así actuar en caso de coincidencia.

La función get_the_category() nos devuelve un arreglo con todas las categorías a las que pertenece una entrada. De ese arreglo, sacamos los nombres de las categorías y comparamos.

    foreach1 as $category) {
        $nombre_categoria = get_cat_name( $category->cat_ID );
        if ($nombre_categoria == "receta de navidad") {
            echo '<p>¡Feliz Navidad!</p>';
        }
    }

Como solo puede aparecer una vez el nombre de la categoría que buscamos, no hace falta hacer comprobaciones para evitar duplicados (Si tenemos bien hechas las categorías 🙂 ).

Así que el archivo content.php quedaría así:

        <div class="entry-content">

            <?php
            if ( is_search() || ! is_singular() && 'summary' === get_theme_mod( 'blog_content', 'full' ) ) {
                the_excerpt();
            } else {
                the_content( __( 'Continue reading', 'twentytwenty' ) );
            }
            foreach2 as $category) {
                $nombre_categoria = get_cat_name( $category->cat_ID );
                if ($nombre_categoria == "receta de navidad") {
                    echo '<p>¡Feliz Navidad!</p>';
                }
            }
            ?>

        </div><!-- .entry-content -->

Esto es sólo un ejemplo como dije, ¡la imaginación al poder!


¡Gracias por leernos!


¡Tus comentarios y preguntas nos ayudan a mejorar, por favor comenta!


  1. get_the_category( 

  2. get_the_category( 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Para ofrecer las mejores experiencias, utilizamos tecnologías como las cookies para almacenar y/o acceder a la información del dispositivo. El consentimiento de estas tecnologías nos permitirá procesar datos como el comportamiento de navegación o las identificaciones únicas en este sitio. No consentir o retirar el consentimiento, puede afectar negativamente a ciertas características y funciones.    Más información
Privacidad