Archivos de la categoría Informática

Personalizar número de artículos por página en WordPress

Seguramente te ha surgido este problema alguna vez. Para una categoría en concreto quieres cambiar el número de artículos que se muestran. En mi caso la intención era aumentar este número.

Para ello hay que modificar un fichero de nuestro tema: el archivo de funciones personalizadas, por defecto, functions.php

#### Añadimos al fichero functions.php lo siguiente ####

/*
 * Personalización del número de posts o artículos por página de una categoría.
 * Capacidad de añadir que se ignoren algunos artículos iniciales
 */

function myprefix_query_offset(&$query) {

  //Antes de nada, asegúrate de trabajar con la consulta correcta
  //En este caso estamos trabajando con los artículos de la categoría 38

  if ( ! $query->is_category('38') ) {

    return;

  }

  //Define el artículo por el que vas a empezar. 0 es el primero, 1 el segundo...
  $offset = 0;

  //Ahora, escribe cuantos artículos quieres ver por página
  $ppp = 10;

  //Comprobamos si estamos en una página distinta a la primera
  if ( $query->is_paged ) {

    //Si estamos en la segunda página o siguientes definimos el artículo por el que debemos empezar como: El número de artículos que hemos decidido saltarnos al principio más el producto del número de página donde estamos menos 1 por el número de artículos por página.
    $page_offset = $offset + ( ($query->query_vars['paged']-1) * $ppp );
    //Aplicamos estos ajustes a la consulta. Tanto el número de artículo por el que empezar como los artículos por página
    $query->set('offset', $page_offset );
    $query->set('posts_per_page', $ppp );

  }
  else {

    //Esta es la primera página. Aplicamos el valor del artículo por que empezar con el que tu has definido al principio. También definimos el número de artículos por página
    $query->set('offset',$offset);
    $query->set('posts_per_page', $ppp );

  }
}

add_action('pre_get_posts', 'myprefix_query_offset', 1 );

/*
 * Función que permite ajustar correctamente
 * el número de páginas a mostrar
 */
function myprefix_adjust_offset_pagination($found_posts, $query) {

  //Escribe otra vez el número de artículo por el que empezar
  $offset = 0;

  //Asegúrate de que aplicas esto sobre el tipo de artículo correcto.
  if ( $query->is_category('38') ) {
  //Restamos al número de artículos encontrados
  //el del artículo por el que empezar
    return $found_posts - $offset;

  }

  //Si no es nuestro caso particular dejamos todo como estaba
  return $found_posts;

}

add_filter('found_posts', 'myprefix_adjust_offset_pagination', 1, 2 );

Código modificado a partir del que podemos encontrar en: Making Custom Queries using Offset and Pagination :: Codex de WordPress

Si además quieres cambiar la presentación de los artículos para esa categoría lo que tienes que hacer es cambiar la parte del loop/bucle de archive.php o del fichero que se encarga de mostrar las categorías en tu tema de wordpress:

<?php /*Start the loop */

  while ( have_posts() ) : the_post();
    /* Include the Post-Format-specific template for the content.
    * If you want to override this in a child theme, then include a file
    * called content-___.php (where ___ is the Post Format name) and that will be used instead.
    */

    if ( is_category('38') ) : ?>
      <div id="categoria38">
        <article id="post-<?php the_ID(); ?>"><a href="<?php the_permalink(); ?>" rel="bookmark"><?php the_title(); ?></a> <a href="<?php the_permalink(); ?>" rel="bookmark">Leer+</a> <?php echo get_the_date(); ?>
      </div>

    <?php

    else :

      get_template_part( 'content', get_post_format() );

    endif;

  endwhile;

  // Previous/next page navigation.
  twentyfourteen_paging_nav();

Esta parte la dejo en su idioma original (Inglés) para aquellos que quieran saber donde hay que introducir el condicional que permite cambiar el formato con el que se muestran los artículos en el listado que crea archive.

Espero que os sea de utilidad.

Saludos.

Las clases y la monarquía

Ayer, en mi ruta diaria se me ocurrió que no sería mala idea ponerme en marcha creando, de forma ágil, algunas clases. Entre ellas pensé en como sería la clase Rey y la clase Principe. La clase Principe extendería de la clase Rey.

Las propiedades de la clase Rey podrían ser el país donde se reina, la familia de la que desciende, el año en que fue proclamado y los métodos quizá el aforamiento, el ocio, las salidas de tiesto, la adbicación, la muerte natural (que, no lo olvidemos, es la forma habitual de que se ejecute el método principe.proclamaciónRey).

La clase Principe, como propiedades, debería tener una referencia al rey al que sucederá, un proceso que lance unos años de intensa formación académica, otro que lance la búsqueda de pareja e incluso un método que nos permita saber el sexo de la descendencia para lanzar, en caso necesario, parlamento.reformaConstitucional.

Y en estas cosas pienso, a veces, mientras realizo un poco de ejercicio por las mañanas.

peligrohumanosuelto

PHP malo y PHP bueno

En realidad no hay PHP malo o PHP bueno sino formas de programar en PHP elegantes y otras que ni son elegantes, ni son escalables, ni permiten trabajar, correctamente, en equipo. Ahora mismo estoy apuntado en dos cursos de PHP. Uno del que se considera malo y otro del bueno.

phpbuenomalo

¿Qué diferencia hay entre uno y otro? Mientras uno se centra en explicarte programación estructurada y haciéndolo todo tu mismo. El otro se lanza, no sólo a la programación orientada a objetos, sino al uso de uno de tantos marcos de trabajo (framework). En este caso particular, explican como usar uno de los que está pegando duro actualmente: Laravel.

Y os preguntaréis ¿Qué hago, entonces, haciendo el curso de PHP malo? La verdad, como dije hace escasas líneas, yo no considero ningún PHP malo o bueno. Realmente, al final, hay que escribir código para funciones. Gran parte de este código es estructurado (y no pasa nada por reconocerlo). Además, saber programación estructurada es como aprender a andar antes de correr, siendo correr programar con objetos.

Saludos.

No temas a la POO

Cuando recibí un mensaje a través de Google+ (sí, esa red social) de jesusda con el titulo “No temas a la Programación Orientada a Objetos” no me lo pensé ni un momento. Entré a devorar el texto. Era algo que había que leer. Conforme avanzaba en el texto cada vez estaba más asombrado. Os cuento de que va la historia.

western

El autor, Johannes “Jos” Dianovich (born Jeremy David) Claerbout, falleció en 1999. En este texto, creado en 1998, nos promete dar las claves para comenzar a caminar en el mundo de la programación orientada a Objetos. Jos utiliza una imagen que engancha. Plantea una comunicación entre una escritoria muy peculiar y un editor muy quisquilloso. Algo que supongo que no difiere mucho de la realidad y que estaría basado en lo trabajoso que es publicar un artículo en una revista de ciencia donde los editores siempre reenvían el trabajo con pequeñas correcciones a hacer. Venga de donde venga la inspiración es una imagen que se hace divertida. El objetivo de la escritora es publicar una historia ambientada en el Salvaje, o no, Oeste. Ese genero del que tanto saben en Almería.

Para ello usa clases para definir a los personajes principales. El papel de main es ni más ni menos que elaborar la trama de la historia. He escuchado muchas veces que hay escritores metódicos que primero crean los personajes. Tienen una carpeta llena de personajes. Después crean los decorados donde se va a desarrollar la historia. Por último disponen estos elementos con una armonía que oculta todo el trabajo que hay por detrás. Este tutorial se basa en este trabajo.

El epílogo del tutorial es simplemente genial. Hay que tener en cuenta que fue escrito hace 16 años.

De url con http a dirección completa

El otro día arreglé un problema que creo que es común. Convertir una dirección del tipo http://dominio.com/algo en /var/www/algo. En PHP se hace así:

Sea $direccionweb la dirección o url de la web tipo http://dominio.com/algo y $rutaabsoluta la variable donde vamos a recoger la ruta absoluta del recurso tipo /var/www/algo entonces:

$ruta = parse_url ($direccionweb) ;
$rutaabsoluta = $_SERVER[‘DOCUMENT_ROOT’].$ruta[‘path’] ;

Espero que sea de ayuda para alguien.