Comenzando con WordPress

Introducción a WordPress

WordPress [WP] es un sistema de gestión de contenido de código abierto para crear aplicaciones, sitios web y blogs. WP está escrito en PHP y utiliza MySQL como almacén de datos para el contenido y la configuración del usuario. Tiene un rico ecosistema de complementos y temas y disfruta de una vibrante comunidad de código abierto, buena documentación y pocas barreras de entrada. La documentación de usabilidad y desarrollo se puede encontrar en el WP Codex.

Una parte de WordPress que lo hace diferente de la mayoría de los otros productos CMS es su Programación dirigida por eventos. Esta es una forma diferente de programación y representación lógica que la arquitectura MVC (Model View Controller) que es utilizada por la mayoría de los sistemas CMS. WordPress utiliza los conceptos de Acciones y Filtros. Forman una cola de eventos que permiten que los complementos y los temas inserten, modifiquen o incluso eliminen partes de la página y/o partes finales de la aplicación web. Un concepto similar es la compilación JIT o Just-In-Time.

Si bien históricamente WordPress ha sido conocido como una plataforma de blogs, y es posible que nunca pierda este estigma, el enfoque del equipo central de WordPress ha cambiado claramente. Con el Estado de la Palabra de 2016, del fundador Matthew Mullenweg, podemos ver un cambio claro en las metas, la visión y el esfuerzo. En 2016, vimos un progreso increíble cuando el núcleo de WordPress adoptó la mayoría del popular complemento REST API. Esta fue claramente la intención del equipo central desde el principio cuando comenzaron un esfuerzo audaz de construir un panel de administración de CMS de JavaScript front-end, que rompe con el estándar dorado que hemos visto durante tantos años; lo llamaron Calpyso.

Temas de WordPress

Asignación de URL a plantillas específicas

Para comprender completamente los temas de WordPress, debe comprender dos conceptos principales:

  1. Enlaces permanentes
  2. La jerarquía de plantillas

Un enlace permanente es una URL permanente que no cambia (o un enlace a un recurso específico. Por ejemplo:

  • example.com/about-us/ (una página en WP)
  • example.com/services/ (una lista de varios elementos, también llamada “archivo” en la jerga de WP)
  • example.com/services/we-can-do-that-for-you/ (un elemento individual)

Cuando un usuario solicita una URL, WordPress aplica ingeniería inversa al enlace permanente para determinar qué plantilla debe controlar su diseño. WordPress busca los diversos archivos de plantilla que podrían controlar este contenido en particular y, en última instancia, da preferencia al más específico que encuentra. Esto se conoce como la jerarquía de plantillas.

Una vez que WP encuentra la plantilla de vista coincidente en la jerarquía, usa ese archivo para procesar y representar la página.

Por ejemplo: index.php (la plantilla “catch-all” predeterminada) será reemplazada por archive.php (la plantilla predeterminada para contenido basado en listas), que a su vez será reemplazada por archive-services.php (un archivo de plantilla específicamente para el archivo denominado “servicios”).

Aquí hay una gran referencia visual para la jerarquía de plantillas

Estructura básica del directorio de temas

Un tema simple se parece a esto:

    // Theme CSS
    style.css

    // Custom functionality for your theme
    functions.php

    // Partials to include in subsequent theme files
    header.php
    footer.php
    sidebar.php
    comments.php

    // "Archives", (listing views that contain multiple posts)
    archive.php
    author.php
    date.php
    taxonomy.php
    tag.php
    category.php

    // Individual content pages
    // Note that home and frontpage templates are not recommended
    // and they should be replaced by page templates
    singular.php
    single.php
    page.php
    front-page.php
    home.php

    // Misc. Utility Pages
    index.php (a catch-all if nothing else matches)
    search.php
    attachment.php
    image.php
    404.php

Ejemplo de un “Único” (plantilla para una publicación individual)

<?php get_header(); ?>

<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
    <h1><?php the_title(); ?></h1>
    <?php the_content(); ?>
    <?php comments_template( '', true ); ?>
<?php endwhile; ?>

<?php get_sidebar(); ?>
<?php get_footer(); ?>

¿Que esta pasando aqui? Primero, carga header.php (similar a PHP include o require), configura The Loop, muestra the_title y the_content, luego incluye comments.php, sidebar.php y footer .php. The Loop hace el trabajo pesado, configurando un objeto ‘Publicar’, que contiene toda la información para el contenido que se está viendo actualmente.

Ejemplo de un “Archivo” (plantilla para una lista de múltiples publicaciones)

<?php get_header(); ?>

<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
    <a href="<?php the_permalink(); ?>"<?php the_title(); ?></a>
    <?php the_excerpt(); ?>
<?php endwhile; ?>

<?php
    next_posts_link( 'Older Entries', $the_query->max_num_pages );
    previous_posts_link( 'Newer Entries' );
?>

<?php get_sidebar(); ?>
<?php get_footer(); ?>

Primero, incluye header.php, configura The Loop e incluye sidebar.php y footer.php. Pero en este caso hay varias publicaciones en el bucle, por lo que en su lugar se muestra un extracto con un enlace a la publicación individual. También se incluyen next_posts_link y previous_posts_link para que el archivo pueda paginar los resultados.

Publicaciones, páginas, tipos de publicaciones personalizadas y campos personalizados

De fábrica, WordPress admite dos tipos de contenido: Publicaciones y Páginas. Las publicaciones generalmente se usan para contenido no jerárquico, como publicaciones de blog. Las páginas se utilizan para contenido estático e independiente, como una página Acerca de nosotros o una página de Servicios de una empresa con subpáginas anidadas debajo.

A partir de la versión 3.0, los desarrolladores pueden definir sus propios tipos de publicaciones personalizadas para ampliar la funcionalidad de WordPress más allá de lo básico. Además de los tipos de publicaciones personalizadas, también puede crear sus propios campos personalizados para adjuntarlos a sus publicaciones/páginas/tipos de publicaciones personalizadas, lo que le permite proporcionar una forma estructurada de agregar y acceder a metadatos dentro de sus plantillas. Consulte: Campos personalizados avanzados.