crear un Theme para WordPress page contacto search

Bien, hoy es el último día del tutorial sobre la creación de un Theme para WordPress paso a paso, hemos decidido agrupar las tres últimas lecciones en un solo artículo, de manera que en el artículo de hoy crearemos nuestra plantilla de pagina, nuestra plantilla de buscador o search y nuestra plantilla de pagina de contacto.

Para no dilatar mucho el artículo empezaremos ya con la materia, de manera que abrimos el artículo con la plantilla de pagina, para empezar abrimos nuestro ID de programación favorito y creamos un archivo PHP nuevo al que le damos el nombre de page.php, dicho archivo lo guardaremos en la raíz de nuestro Theme.

Una vez creado y guardado el nuevo archivo page.php lo que debemos hacer es darle algo de código, de manera que de nuevo con nuestro ID de programación favorito copiaremos y pegaremos el siguiente código.




<?php
get_header
();
    if (
have_posts()) : while (have_posts()) : the_post();
    echo 
'<section class="container secindex">';
            echo 
'<article class="artindex">';
                echo 
'<div class="imgindex">'.get_the_post_thumbnail().'</div>';
                echo 
'<div class="indexcont">';
                    echo 
'<div class="titindex"><h1>'.get_the_title().'</h1></div>';
                    echo 
'<div class="excindex">'.get_the_content().'</div>';
                    echo 
'<div class="foindex">';
                        echo 
'<p class="derindex">'.get_the_date().' por <a href="'.get_author_posts_url(get_the_author_meta('ID')).'">'.get_the_author().'</a></p>';
                        
$twitter of_get_option('twitter_fs','');
                        
$facebook of_get_option('facebook_fs','');
                        
$instagram of_get_option('instagram_fs','');
                        
$pinterest of_get_option('pinterest_fs','');
                        echo 
'<ul class="izindex">';
                            if (
$facebook){
                                echo 
'<li><a href="'.$facebook.'" target="_blank" rel="noopener noreferrer"><i class="icon-facebook"></i></a></li>';
                            }
                            if (
$twitter){
                                echo 
'<li><a href="'.$twitter.'" target="_blank" rel="noopener noreferrer"><i class="icon-twitter"></i></a></li>';
                            }
                            if (
$instagram){
                                echo 
'<li><a href="'.$instagram.'" target="_blank" rel="noopener noreferrer"><i class="icon-instagram"></i></a></li>';
                            }
                            if (
$pinterest){
                                echo 
'<li><a href="'.$pinterest.'" target="_blank" rel="noopener noreferrer"><i class="icon-pinterest-circled"></i></a></li>';
                            }
                        echo 
'</ul>';
                    echo 
'</div>';
                echo 
'</div>';
                echo 
'<div class="author">';
                    
$imgart of_get_option('imgart_fs','');
                    
$nombre of_get_option('nombre_fs','');
                    
$descripcion of_get_option('descripcion_fs','');
                    if(
$imgart){
                        echo 
'<div class="imgart"><img src="'.$imgart.'" /></div>';
                    }
                    if(
$nombre){
                        echo 
'<div class="nomart">'.$nombre.'</div>';
                    }
                    if(
$descripcion){
                        echo 
'<div class="desart">'.$descripcion.'</div>';
                    }
                    
$twitter of_get_option('twitter_fs','');
                    
$facebook of_get_option('facebook_fs','');
                    
$instagram of_get_option('instagram_fs','');
                    
$pinterest of_get_option('pinterest_fs','');
                    echo 
'<ul class="autsocial">';
                        if (
$facebook){
                            echo 
'<li><a href="'.$facebook.'" target="_blank" rel="noopener noreferrer"><i class="icon-facebook"></i></a></li>';
                        }
                        if (
$twitter){
                            echo 
'<li><a href="'.$twitter.'" target="_blank" rel="noopener noreferrer"><i class="icon-twitter"></i></a></li>';
                        }
                        if (
$instagram){
                            echo 
'<li><a href="'.$instagram.'" target="_blank" rel="noopener noreferrer"><i class="icon-instagram"></i></a></li>';
                        }
                        if (
$pinterest){
                            echo 
'<li><a href="'.$pinterest.'" target="_blank" rel="noopener noreferrer"><i class="icon-pinterest-circled"></i></a></li>';
                        }
                    echo 
'</ul>';
                echo 
'</div>';
            echo 
'</article>';
            
get_sidebar();
            echo 
'<article class="container-comments">';
                
comments_template();
            echo 
'</article>';
    echo 
'</section>';
    endwhile; endif;
get_footer();
?>

Como podéis ver de nuevo estamos reciclando las clases y la jerarquía HTML5 que llevamos utilizando hasta el momento, ya sabéis, aunar y aprovechar código es ahorrar tiempo a la hora de realizar posteriores modificaciones.

Nosotros hemos añadido el article con la sección de los comentarios, lo normal en una pagina es que los comentarios estén desactivados, vosotros podéis quitar el article directamente si no queréis que aparezcan los comentarios, no habrá ningún problema.

Ahora que ya tenemos nuestra plantilla de pagina creada es el momento de crear alguna pagina de ejemplo, si no os queréis liar a crearla nosotros os dejaremos un nuevo contenido dummy all final de este artículo con más artículos, páginas, comentarios y menús.

Ahora le toca el turno a la plantilla del buscador o search, como sabéis el buscador lo creamos hace bastantes lecciones en el header, pero todavía no hace absolutamente nada, si ponemos algo en la caja de texto este vuelve a cargar la pagina pero no muestra resultados de búsqueda, hoy crearemos la plantilla para solucionar esto.

De nuevo con nuestro ID de programación favorito crearemos un nuevo archivo PHP y lo llamaremos search.php, al igual que el anterior archivo lo guardaremos en la raíz de nuestro Theme, una vez lo tengamos creado copiaremos y pegaremos el siguiente código dentro de el.




<?php
get_header
();
    echo 
'<section class="container secindex">';
        echo 
'<article class="artindex">';
            echo 
'<div class="archive-box">';
                echo 
'<span>Resultados de búsqueda para:</span>';
                
the_search_query();
            echo 
'</div>';
        echo 
'</article>';
        if (
have_posts()) : while (have_posts()) : the_post();
            echo 
'<article class="artindex">';
                echo 
'<div class="imgindex">'.get_the_post_thumbnail().'</div>';
                echo 
'<div class="indexcont">';
                    
the_category();
                    echo 
'<div class="titindex"><a href="'.get_the_permalink().'">'.get_the_title().'</a></div>';
                    echo 
'<div class="excindex">'.get_the_excerpt().'</div>';
                    echo 
'<div class="moreindex"><a href="'.get_the_permalink().'">Leer más</a></div>';
                    echo 
'<div class="foindex">';
                        echo 
'<p class="derindex">'.get_the_date().' por <a href="'.get_author_posts_url(get_the_author_meta('ID')).'">'.get_the_author().'</a> con '.get_comments_number().' comentarios</p>';
                        
$twitter of_get_option('twitter_fs','');
                        
$facebook of_get_option('facebook_fs','');
                        
$instagram of_get_option('instagram_fs','');
                        
$pinterest of_get_option('pinterest_fs','');
                        echo 
'<ul class="izindex">';
                            if (
$facebook){
                                echo 
'<li><a href="'.$facebook.'" target="_blank" rel="noopener noreferrer"><i class="icon-facebook"></i></a></li>';
                            }
                            if (
$twitter){
                                echo 
'<li><a href="'.$twitter.'" target="_blank" rel="noopener noreferrer"><i class="icon-twitter"></i></a></li>';
                            }
                            if (
$instagram){
                                echo 
'<li><a href="'.$instagram.'" target="_blank" rel="noopener noreferrer"><i class="icon-instagram"></i></a></li>';
                            }
                            if (
$pinterest){
                                echo 
'<li><a href="'.$pinterest.'" target="_blank" rel="noopener noreferrer"><i class="icon-pinterest-circled"></i></a></li>';
                            }
                        echo 
'</ul>';
                    echo 
'</div>';
                echo 
'</div>';
            echo 
'</article>';
            
get_sidebar();
        endwhile; 
fs_paginate(); wp_reset_query(); endif;
    echo 
'</section>';
get_footer();
?>

De nuevo reciclamos clases y jerarquía HTML5, pero esta vez utilizamos una nueva llamada nativa de WordPress, concretamente the_search_query, esta llamada no hace otra cosa que imprimir la palabra o palabras que se han escrito en la caja de texto, es decir, nos devuelve el valor de la búsqueda que se ha realizado.

Ahora sí, en este momento al realizar una búsqueda obtenemos un listado con los artículos y páginas que tengan relación con la cadena de texto que estemos buscando, recordemos que las búsquedas se realizan en títulos y contenido de los artículos y páginas, por lo que si queremos afinar bien los resultados deberemos ser muy concretos, no os preocupes, más tarde haremos algo con el buscador para que sea más fino.

En este momento le toca a la pagina de contacto, en este caso crearemos una pagina especial, a diferencia de la plantilla de pagina o page.php, esta vez crearemos una plantilla especial de pagina, para ello de nuevo con nuestro ID de programación favorito creamos un nuevo archivo PHP y lo llamamos page-contacto.php, el echo de utilizar este tipo de jerarquía para el nombre de la pagina es simplemente por que así WordPress la reconoce como una plantilla de pagina, bueno, una vez creado el archivo copiaremos y pegaremos el siguiente código y los guardaremos en la raíz de nuestro Theme.




<?php
/*
Template Name: Pagina para el contacto
*/
get_header();
    if (
have_posts()) : while (have_posts()) : the_post();
    echo 
'<section class="container secindex">';
            echo 
'<article class="artindex">';
                echo 
'<div class="imgindex">'.get_the_post_thumbnail().'</div>';
                echo 
'<div class="indexcont">';
                    echo 
'<div class="titindex"><h1>'.get_the_title().'</h1></div>';
                    echo 
'<div class="excindex">';
                        echo 
'<form id="contacto" name="contacto" method="post" action"">';
                            global 
$post;
                            if (
$_POST['submit']) {
                                
$email_contact 'alnaseos@gmail.com';;
                                
$nombre $_POST['nombre'];
                                
$email $_POST['email'];
                                
$comentarios $_POST['comentarios'];
                                
$para $email_contact;
                                
$titulo 'Contacto Florence';
                                
$header 'From: ' $email;
                                
ob_start(); ?>
                                <style>
                                    .mail-wp-franja{
                                        width:100%;
                                        height: 50px;
                                        display:block;
                                        overflow:hidden;
                                        background-color:#EF9D87;
                                        text-align:center;
                                        box-sizing:border-box;
                                        padding:15px 0 0 0;
                                    }
                                    .mail-wp-franja span{
                                        width:100% !important;
                                        color:#fff !important;
                                        margin-right: 20px !important;
                                    }
                                    .mail-wp-franja a{
                                        color:#fff !important;
                                        font-weight:bold !important;
                                    }
                                    .mail-wp-franja2{
                                        width:100%;
                                        height: 15px;
                                        display:block;
                                        overflow:hidden;
                                        background-color:#EF9D87;
                                        text-align:center;
                                        box-sizing:border-box;
                                        padding:15px 0 0 0;
                                    }
                                    .mail-wp-mail{
                                        width:700px;
                                        margin:0 auto;
                                        border:1px solid #EF9D87;
                                    }
                                    .mail-wp-logo img{
                                        width:175px;
                                        height:auto;
                                        background-color:#fff;
                                        margin-top:20px;
                                        margin-bottom:20px;
                                        margin-left:37%;
                                    }
                                    .mail-wp-mail p{
                                        padding-left:20px;
                                        padding-right:20px;
                                    }
                                    .mail-wp-mail span{
                                        color:#EF9D87;
                                        font-weight:bold;
                                    }
                                </style>
                                <div class="mail-wp-mail">
                                    <div class="mail-wp-franja"></div>
                                    <div class="mail-wp-logo">
                                        <img src="<?php bloginfo('stylesheet_directory'); ?>/images/florence-admin.png" />
                                    </div>
                                    <div class="mail-wp-franja"></div>
                                    <p><span>- Nombre:</span> <?php echo $nombre?></p>
                                    <p><span>- Email:</span> <?php echo $email?></p>
                                    <p><span>- Comentario escrito:</span> <?php echo $comentarios?></p>
                                    <div class="mail-wp-franja"></div>
                                </div> 
                                <?php $msjCorreo ob_get_contents();
                                
ob_end_clean();                 
                                if (
wp_mail($para$titulo$msjCorreo$header)) {
                                    echo 
'<p class="success">';
                                    
_e('¿Gracias por contactar conmigo! ','florence');
                                    echo 
'</p>';
                                } else {
                                    echo 
'<p class="error">';
                                    
_e('Se ha producido un error, por favor intentalo más tarde.','florence');
                                    echo 
'</p>';
                                }
                            }
                            echo 
'<p><input type="text" id="nombre" name="nombre" placeholder="Nombre y apellidos*" required="required" /></p>';
                            echo 
'<p><input type="email" id="email" name="email" placeholder="E-mail" /></p>';
                            echo 
'<p><textarea id="comentarios" name="comentarios" placeholder="Comentarios"></textarea></p>';
                            echo 
'<input type="submit" id="submit" name="submit" value="ENVIAR" />';
                        echo 
'</form>';
                    echo 
'</div>';
                    echo 
'<div class="foindex">';
                        echo 
'<p class="derindex">'.get_the_date().' por <a href="'.get_author_posts_url(get_the_author_meta('ID')).'">'.get_the_author().'</a></p>';
                        
$twitter of_get_option('twitter_fs','');
                        
$facebook of_get_option('facebook_fs','');
                        
$instagram of_get_option('instagram_fs','');
                        
$pinterest of_get_option('pinterest_fs','');
                        echo 
'<ul class="izindex">';
                            if (
$facebook){
                                echo 
'<li><a href="'.$facebook.'" target="_blank" rel="noopener noreferrer"><i class="icon-facebook"></i></a></li>';
                            }
                            if (
$twitter){
                                echo 
'<li><a href="'.$twitter.'" target="_blank" rel="noopener noreferrer"><i class="icon-twitter"></i></a></li>';
                            }
                            if (
$instagram){
                                echo 
'<li><a href="'.$instagram.'" target="_blank" rel="noopener noreferrer"><i class="icon-instagram"></i></a></li>';
                            }
                            if (
$pinterest){
                                echo 
'<li><a href="'.$pinterest.'" target="_blank" rel="noopener noreferrer"><i class="icon-pinterest-circled"></i></a></li>';
                            }
                        echo 
'</ul>';
                    echo 
'</div>';
                echo 
'</div>';
                echo 
'<div class="author">';
                    
$imgart of_get_option('imgart_fs','');
                    
$nombre of_get_option('nombre_fs','');
                    
$descripcion of_get_option('descripcion_fs','');
                    if(
$imgart){
                        echo 
'<div class="imgart"><img src="'.$imgart.'" /></div>';
                    }
                    if(
$nombre){
                        echo 
'<div class="nomart">'.$nombre.'</div>';
                    }
                    if(
$descripcion){
                        echo 
'<div class="desart">'.$descripcion.'</div>';
                    }
                    
$twitter of_get_option('twitter_fs','');
                    
$facebook of_get_option('facebook_fs','');
                    
$instagram of_get_option('instagram_fs','');
                    
$pinterest of_get_option('pinterest_fs','');
                    echo 
'<ul class="autsocial">';
                        if (
$facebook){
                            echo 
'<li><a href="'.$facebook.'" target="_blank" rel="noopener noreferrer"><i class="icon-facebook"></i></a></li>';
                        }
                        if (
$twitter){
                            echo 
'<li><a href="'.$twitter.'" target="_blank" rel="noopener noreferrer"><i class="icon-twitter"></i></a></li>';
                        }
                        if (
$instagram){
                            echo 
'<li><a href="'.$instagram.'" target="_blank" rel="noopener noreferrer"><i class="icon-instagram"></i></a></li>';
                        }
                        if (
$pinterest){
                            echo 
'<li><a href="'.$pinterest.'" target="_blank" rel="noopener noreferrer"><i class="icon-pinterest-circled"></i></a></li>';
                        }
                    echo 
'</ul>';
                echo 
'</div>';
            echo 
'</article>';
            
get_sidebar();
    echo 
'</section>';
    endwhile; endif;
get_footer();
?>

Como podemos ver en este caso si que han cambiado muchas cosas, estamos creando un archivo completamente nuevo, eso sí, las clases y jerarquías HTML5 principales las seguimos reciclando de los archivos anteriores para no utilizar código nuevo absurda mente, bien, empecemos a repasar y explicar el código de la plantilla page-contacto.php.

En primer lugar y casi lo más importante creamos la cabecera de nuestra plantilla, la cadena “Template Name” es la que le dice a WordPress que esa nueva pagina es una plantilla de pagina nueva y que debe ser tratada como tal, gracias a esta cabecera podremos ir a crear una nueva pagina y en “atributos de pagina” veremos que ahora existe un desplegable llamado “plantilla” donde aparece el nombre que le hemos puesto a nuestro archivo page-contacto.php en la cabecera, al elegir como plantilla esta y guardar la nueva pagina se mostrara con los estilos, clases y jerarquía HTML5 que le hayamos dado a dicho archivo.

El código que sigue no tiene misterio ya que es el mismo que utilizamos siempre, hasta que llegamos al “form”, aquí empieza el código nuevo, en primer lugar abrimos una etiqueta de formulario con un ID, un NAME, un método POST y un ACTION en la misma pagina, esto define que nuestro formulario se ejecutará mediante POST, es decir enviará los datos por privado, y se ejecutará en la misma pagina que estamos visualizando, de manera que tendremos todo el código en dicha pagina.

Seguidamente llamamos a la variable global de WordPress, creamos un condicional que dice que si se ha hecho clic en el botón SUBMIT se debe ejecutar el siguiente código, el botón SUBMIT lo crearemos al final del formulario ya que es el botón utilizado para enviarlo, seguido de la apertura del condicional creamos las diferentes variables necesarias para el proceso del formulario.

  • $email_contact, a la que le damos como valor el email al que deben llegar los datos del formulario, en este caso uno de los míos, vosotros debéis cambiarlo.
  • $nombre, será el ID que le daremos al campo de texto del formulario para ingresar el nombre.
  • $email, será el ID que le daremos al campo de email del formularios para ingresar el email del usuario en cuestión.
  • $comentarios, crearemos una caja de texto con el ID comentarios para que el usuario nos deje un comentario en el formulario.
  • $para, como valor le damos la variable $email_contact, esto lo hacemos para utilizar la variable $para más adelante, aunque es un paso que nos podríamos saltar ya que podríamos utilizar directamente la variable $email_contact.
  • $titulo, esta variable tiene como valor el texto que nos saldrá en el mensaje que llegará a nuestra bandeja de entrada.
  • $header, variable con valor $email creado anteriormente que utilizaremos más adelante para que nos salga en la bandeja de entrada quien lo envía.

Ahora abrimos ob_start, todo lo que esté entre ob_start y ob_end_clean aparecerá en el contenido del email que recibiremos en nuestra bandeja, de manera que entre estas dos funciones añadiremos todo nuestro contenido.

Empezamos añadiendo unas pocas lineas de CSS para darle estilos a nuestro email, como veis son estilos bastante sencillos por lo que no pasaremos a explicarlos, seguidamente creamos el cuerpo de nuestro email, se puede hacer con DIVS o con TABLAS, eso va a vuestro gusto, le añadimos en la cabecera el logo que pusimos en el panel de control para aprovechar la imagen, luego imprimimos las variables nombre, email y comentarios, por último declaramos la variable $msjCorreo a la que damos el valor ob_get_contents, este valor representa todo lo contenido entre ob_start y ob_end.

Ahora viene lo más importante ya que enviaremos nuestro email, para ello creamos un condicional que dice que si todas las variables son correctas y el email es enviado imprima un mensaje dando las gracias, de lo contrario imprimirá un mensaje dando un error, como veis utilizamos la función nativa de WordPress wp_mail y le damos las variable $para, $titulo, $msjCorreo y $header creadas anteriormente.

A continuación lo que haremos será crear el formulario de contacto en sí, el que aparecerá en nuestra pagina page-contacto.php, este formulario consta tan solo de cuatro campos, el campo nombre para el que creamos ya una variable, el campo email para el que también se creo su variable, un textarea con el ID comentarios para el que también se creo una variable y el campo enviar con el ID submit que utilizamos en el primer condicional, el código que resta en esta pagina es el mismo utilizado en el resto de paginas hasta ahora por lo que no lo comentaremos ya que esta más que comentado.

En este momento ya podemos ir al admin de nuestro WordPress y crear una nueva pagina llamada contacto y asignarle la plantilla que hemos creado, pero no os preocupéis al final del artículo os dejaremos contenido dummy nuevo con ella agregada.

Ahora es el momento de crear algunas funciones para modificar un poco el funcionamiento del buscador y el formulario de contacto, para ello con nuestro ID de programación favorito abrimos el archivo functions.php y añadimos al final de todo el código que ya tenemos el siguiente.




<?php
//wp_mail html
add_filter ("wp_mail_content_type""cvf_mail_content_type");
function 
cvf_mail_content_type() {
    return 
"text/html";
}

//Buscar solo en títulos
function fs_search_by_title$search$wp_query ) {
if ( ! empty( 
$search ) && ! empty( $wp_query->query_vars['search_terms'] ) ) {
    global 
$wpdb;
    
$q $wp_query->query_vars;
    
$n = ! empty( $q['exact'] ) ? '' '%';
    
$search = array();
    foreach ( ( array ) 
$q['search_terms'] as $term )
    
$search[] = $wpdb->prepare"$wpdb->posts.post_title LIKE %s"$n $wpdb->esc_like$term ) . $n );
    if ( ! 
is_user_logged_in() )
    
$search[] = "$wpdb->posts.post_password = ''";
    
$search ' AND ' implode' AND '$search );
}
return 
$search;
}
add_filter'posts_search''fs_search_by_title'10);
?>

En la primera función lo que estamos haciendo es añadir una nuevo filtro a la función nativa de WordPress wp_mail_content_type, lo que añadimos es un filtro que le dice return “text/html”, es decir, añadimos el soporte HTML a los correos electrónicos de WordPress ya que por defecto no son compatibles con el código HTML.Con la segunda función lo que estamos haciendo es modificar el funcionamiento del buscador nativo de WordPress, como dijimos al principio el buscador funciona buscando por títulos y contenido la cadena de texto que ponemos en la caja del mismo, esto hace que los resultados sean demasiado amplios y poco finos, gracias a esta función el buscador se limita a buscar solo en los títulos de artículos y paginas que en realidad es lo que recuerda el usuario, de esta manera los resultados de búsqueda serán mucho más finos.

Y por último vamos a darle un poco de estilos a nuestro formulario de contacto para que no quede tan feo como está ahora mismo, para ello y de nuevo con nuestro ID de programación favorito abrimos nuestro archivo style.css, una vez abierto y al final de todo el código copiamos y pegamos el siguiente.




<style>
.secindex input[type="email"],
.secindex input[type="text"]{
    padding: 8px 10px;
    border: 1px solid #DDD;
    margin-right: 10px;
    border-radius: 3px;
    color: #999;
    margin-bottom: 15px;
    font-size: 11px;
    width: 250px;
}
.secindex textarea{
    padding: 14px;
    border: 1px solid #DDD;
    border-radius: 3px;
    width: 95%;
    height: 120px;
    font-size: 13px;
    color: #777;
    margin-bottom: 14px;
    line-height: 20px;
}
.secindex input[type="submit"]{
    font-family: "Open Sans",sans-serif;
    text-transform: uppercase;
    letter-spacing: 2px;
    background: #eee;
    border-radius: 0;
    font-size: 11px;
    color: #666;
    padding: 12px 19px 14px;
    margin-top: 20px;
    display: block;
    border: none;
    -o-transition: .3s;
    -ms-transition: .3s;
    -moz-transition: .3s;
    -webkit-transition: .3s;
    transition: .3s;
    cursor: pointer;
    border-radius: 30px;
    width: auto;
}
.secindex input[type="submit"]:hover{
    background-color:#3c3c3c;
    color:#fff;
}
</style>

Como vemos primero damos estilos al campo de texto y al campo email que habíamos creado en el formulario, luego le damos estilos a la caja de texto o textarea también creada y por último le damos sus estilos al botón de envío, los estilos ya los hemos ido viendo durante el tutorial por lo que no hace falta que los comentemos más.

Y con este artículo de hoy ya habremos acabado nuestro tutorial sobre la creación de un Theme para WordPress paso a paso desde código cero, esperamos que os haya gustado y sobre todo que os haya servido de alguna ayuda para poder empezar a crear vuestros propios Themes para WordPress desde cero.

A continuación os dejamos un nuevo contenido dummy listo para descargar que contiene paginas, artículos, comentarios, categorías y menús.

Y por si alguno de los que habéis seguido el tutorial no habéis podido crear vuestro propio Theme por algún motivo aquí os dejamos para descargar el Theme que hemos creado con todo el código limpio.

Como siempre recordaros que podéis ver el Theme original que hemos clonado aquí, los cambios que hemos hecho cada día en el tutorial aquí, y si tenéis alguna duda sobre el curso podéis dejar vuestros comentarios o por Twitter en @ricardfs.

25 mayo, 2020 por ricard

ricard
Soy Ricard FS, me dedico a la programación desde el año 2000, me dediqué en pleno a WordPress desde el año 2015, ahora creo Plugins y Theme para WordPress desde código cero, y me gusta la divulgación de código, por ello la creación de este blog.

Deja tu comentario

Deja una respuesta

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

:wink: :-| :-x :twisted: :) 8-O :( :roll: :-P :oops: :-o :mrgreen: :lol: :idea: :-D :evil: :cry: 8) :arrow: :-? :?: :!: