WordPress Snippets: Modificar el número de posts por página

WordPress Snippets: Modificar el número de posts por página

Con esta entrada o post comienzo una serie de artículos sobre diferentes snippets de código para WordPress, que no son más que «trocitos» de código que realizan o pretenden realizar tareas concretas.

En este caso voy a explicar el código para modificiar el número de posts por página que establece WordPress o que tal vez nuestro thema también lo haya modificado. En esos casos en los que queramos modificar el número de posts por página en algunas de las páginas de nuestro blog, podemos utilizar el código que pondré a continuación.

Pero antes de nada comentar que procuraré hacer dos partes o más bien hacerlo de dos formas, o tres si me apuras.

En primer lugar vamos a ver cómo hacerlo con programación estructurada y en otro artículo lo haremos con programación orientada a objetos.

Para incluir este código u otros en vuestro blog de WordPress, lo podéis hacer en el fichero «functions.php» de vuestro tema. No hay problema. Lo podeís poner al final del fichero y listo. Eso si, tened cuidado puesto que si lo hacéis en el editor de WordPress y algo falla, tendréis que modificar el fichero «functions.php» descargándolo por ftp y luego volver a subirlo.

Es muy común olvidar algún «;» o algún cierre «}«. Sin más, tenedlo en cuenta.

También podéis crear vuestro propio plugin y dependiendo de algunas cosas, tal vez en otro artículo lo haga en un plugin y así vemos mejor cómo se hace un plugin y vamos practicando.

Comenzamos creando la función que ejecutará el hook:

function number_of_posts_per_page( $number ) {
       ........
}

Como podemos ver en la función, recibe una variable. Esta variable contendrá el número de posts por página que le indiquemos.

Y ahora el action que ejecutará la función y que es el alma de la programación en WordPress:

add_action('pre_get_posts', 'number_of_posts_per_page');

Lo que hace es ejecutar la función que vamos a crear en el action «pre_get_posts» que como su propio nombre indica tiene lugar antes de cojer los posts para luego mostrarlos. De esta manera, le pasamos el númeor de posts a este hook y el lo hará todo por nosotros.

imagen_pixabay_oscarabadfolgueira_wordpress_snippets_modificar_numero_posts_por_pagina

Ahora bien… Podemos establecer el número de posts por página en diferentes páginas. Como por ejemplo en la página de inicio, en la de búsqueda, en la de etiquetas, etc..

En primer lugar haremos una prueba sólo con la página de inicio.

Supongamos que queremos que en la página de inicio de nuestro blog se muestren los artículos de 15 en 15. Para ello, dentro de la función que hemos comentado antes, especificamos lo siguiente:

if ( is_home() ) {
    $number->set( 'posts_per_page', 15 );
}

¿Fácil verdad?

Por si acaso comento la jugada: Si «is_home«, osea que si es la página de inicio o inicial de nuestro blog que haga algo:

$number->set( 'posts_per_page', 15 );

Establecer en 15 el número de «posts_per_page» y guardarlo en la variable $number.

Creo que no hay mucho más que decir sobre esto porque se ve muy claro.

Bien, pues ya que estamos, vamos ha tener en cuenta otras páginas para establecer también el número de posts por página. Como por ejemplo las siguientes:

  • Página de etiquetas.
  • Página de autor.
  • Página de búsqueda.
  • Página de categoría.
  • Página de archivo.

Al igual que con la página de inicio, cada una de las anteriores dispone de un «is_xxx» para saber si se trata de la página en cuestión.

A continuación indico las páginas junto con sus funciones:

Página de inicio.      ---> is_home()
Página de etiquetas.    --> is_tag()
Página de autor.       ---> is_author()
Página de búsqueda.     --> is_search()
Página de categoría.   ---> is_category()
Página de archivo.     ---> is_archive()

Pues ya tenemos toda la información que necesitamos para completar nuestro snippet WordPress.

Aquí teneís el código completo:

Como he indicado antes, lo podéis incluir en el fichero «functions.php» del theme o hacer un plugin.

Espero que os sea de utilidad.

En posteriores artículos veremos más cosas sobre esto y otras muchas cosas de WordPress.

Saludos.

Programación de Plugins WordPress: Crear un Meta Box

En otros tutoriales hemos visto cómo crear un menú y submenu en el panel de administración de WordPress. Pues bien, en este caso vamos a ver cómo crear un Meta Box personalizado por nosotros mismos.

Pero antes de nada, ¿Qué es un Meta Box?

No son otra cosa que secciones o campos extra que nos permiten añadir información o datos adicionales a nuestro contenido, páginas, etc… Pero para que nos quede más claro antes de hacer nada, pongo unas capturas para que nos quede claro a todos de lo que estamos hablando:

crear metabox - 01
crear metabox 02

Bien, con estos dos ejemplos creo que nos puede quedar claro de lo que estamos hablando, ¿verdad?

La primera imagen corresponde a un meta box que está creado justo debajo de el cuadro de escritura del cuerpo de las entradas y el segundo está en la barra lateral de la misma pantalla de edición de entradas.

Nos ponemos manos a la obra y como siempre a la hora de crear un plugin:

  • Creamos  un directorio o carpeta con el nombre de nuestro plugin.
  • Dentro de este directorio creamos un fichero con el mismo nombre que la carpeta y con extensión .php.
  • Editamos el fichero en cuestión y lo primero que hacemos es crear la información del plugin como se muestra a continuación:
<?php
/*
Plugin Name: OAF Create Meta Box
Plugin URI: https://oscarabadfolgueira.com/programacion-de-plugins-wordpress-crear-un-meta-box
Description: This plugin creates tow Meta Boxes
Version: 1.0
Author: Oscar Abad Folgueira
Author URI: https://oscarabadfolgueira.com
License: GPLv2
License URL: http://www.gnu.org/licenses/gpl-2.0.html
*/

No me he complicado mucho y le he llamado al plugin donde vamos a crear los meta boxes: «OAF Create Meta Box«.

Esto es pura rutina y ahora vamos a lo que nos importa y lo que nos gusta, código!

En primer lugar y como estamos haciendo en los últimos tutoriales sobre programación de plugins, utilizamos la función add_action() para añadir un action.

En este caso existe una acción (action) para añadir meta boxes. La acción en cuestión es: ‘add_meta_boxes‘. Como siempre los nombres son muy aclaratorios.

Sin más, indico el código para añadir la acción (action):

add_action( 'add_meta_boxes', 'oaf_create_metabox' );

Fácil y sencillo. Pero si lo único que nos hacía falta es saber el nombre de la acción e cuestión ¿no?

Entonces estamos en el momento en el que tenemos que crear la función que se ejecutará en la acción «add_meta_boxes«. vamos a ello:

function oaf_create_metabox () {
}

Ya, era un broma. Esto no nos dice nada. Ahora si, vamos a utilizar la función que nos permite crear un meta box. La función en cuestión es: «add_meta_box()«. No confundir con la acción, ¿vale?

En cuanto a la sintaxis de la función «add_meta_box()«, la vemos a continuación:

add_meta_box( $id, $title, $callback, $screen, $context, $priority, $callback_args );

Ahora comentamos un poco los parámetros:

  • $id: Se refiere al atributo ‘id‘ HTML. Para poder inyectar estilos.
  • $title: El título de la pantalla de edición.
  • $callback: Función que se ejecutará.
  • $screen: El tipo de pantalla en la que se mostrará el meta box. Los valores para este argumento pueden ser: ‘post‘, ‘page‘, ‘dashboard‘, ‘link‘, ‘attachment‘ o ‘custom_post_type‘.
  • $context: La parte de la página dónde se mostrará. Valores posibles: ‘normal‘, ‘advanced‘ o ‘side‘. El valor por defecto es «advanced«.
  • $priority: Prioridad dentro del contexto en el que se mostrará. Los valores para este argumento pueden ser: ‘high‘, ‘core‘, ‘default‘, ‘low‘. El valor por defecto es, como no: «default«.
  • $callback_args: Argumentos a pasar a la función $callback.

Comentar que los tres primeros parámetros son obligatorios y el resto son opcionales.

Y ahora que ya sabemos las opciones que tenemos, vamos a crear un meta box con esta magnífica función:

function oaf_create_metabox () {
	// Function to create the meta box: oaf-metabox1 -- en posts, normal y high.
	add_meta_box( 'oaf-metabox1', 'Mi primer Meta Box', 'oaf_create_metabox_function', 'post', 'normal', 'high' );
}

Resumimos:

  • oaf-metabox1: Es el id del nuevo meta box que estamos creando.
  • Mi primer Meta Box: El nombre del meta box. Esto lo veremos…
  • oaf_create_metabox_function: La función que «pintará» el contenido del meta box. La crearé a continuación.
  • post: la página donde se mostrará el meta box.
  • normal: Se mostrará en la columna debajo del editor del texto del post. Luego lo vemos.
  • high: Prioridad alta lo que hará que aparezca bien arriba.

Y para muestra un botón:

crear metabox 03

Se ve bien dónde está el meta box, ¿no?

Pues venga, vamos a crear otro, esta vez en las páginas y en la barra lateral derecha:

//Function to create the meta box: oaf-metabox2  -- en páginas, side, core
	add_meta_box( 'oaf-metabox2', 'Mi segundo Meta Box', 'oaf_create_metabox_function', 'page', 'side', 'core' );

Lo que hace este es esto:

crear metabox 04

¡Perfecto!

Ah! Pero se me había olvidado comentar que tenemos que crear la función a la que llama. Esta es muy fácil:

function oaf_create_metabox_function(){
	echo 'Mi nuevo Meta Box';
}

No creo que haga falta decir lo que hace esta función…

Ya veis lo fácil que es crear meta boxes. Eso si, todavía no hemos hecho nada con ellos. Eso lo dejamos para otro tutorial porque las cosas se aprenden mejor poquito a poco y así también podemos hacer alguna que otra prueba o test para afianzar los nuevos conocimientos que vamos adquiriendo.

Para terminar pongo el código fuente completo de el fichero «oaf-create-metabox.php«:

<?php
/*
Plugin Name: OAF Create Meta Box
Plugin URI: https://oscarabadfolgueira.com/programacion-de-plugins-wordpress-crear-un-meta-box
Description: This plugin creates tow Meta Boxes
Version: 1.0
Author: Oscar Abad Folgueira
Author URI: https://oscarabadfolgueira.com
License: GPLv2
License URL: http://www.gnu.org/licenses/gpl-2.0.html
*/
// Action hook add_meta_boxes
add_action( 'add_meta_boxes', 'oaf_create_metabox' );

function oaf_create_metabox () {
	// Function to create the meta box: oaf-metabox1 -- en posts, normal y high.
	add_meta_box( 'oaf-metabox1', 'Mi primer Meta Box', 'oaf_create_metabox_function', 'post', 'normal', 'high' );
	//Function to create the meta box: oaf-metabox2  -- en páginas, side, core
	add_meta_box( 'oaf-metabox2', 'Mi segundo Meta Box', 'oaf_create_metabox_function', 'page', 'side', 'core' );
}
// Function that prints out the HTML for the edit screen section.
function oaf_create_metabox_function(){
	echo 'Mi nuevo Meta Box';
}
?>

Como siempre, os dejo el código fuente de este plugin en Github por si queréis descargarlo.

Saludos y nos vemos en el próximo tutorial.

Ir al contenido