PAGINACION

All posts tagged PAGINACION

Paginar sin plugin en WordPress

Como paginar sin plugin

Para poder usar la paginación del plugin Page-Navi sin tener que instalarlo en tu theme podéis seguir estos pasos.

1. Descargamos el plugin WP-PageNavi de la página http://wordpress.org/extend/plugins/wp-pagenavi/

2. Extraer los ficheros wp-pagenavi.php y wp-pagenavi.css del zip que nos hemos bajado y los pegamos en tu_themeincludes y tu_theme/css respectivamente.

3. Ahora tenemos que modificar algunas líneas en los ficheros de nuestro theme.

3.1 En el fichero wp-pagenavi.php buscamos:

1
2
  function wp_pagenavi($before = '', $after = '')
 { global $wpdb, $wp_query;

y le agregamos después la llamada a la función pagenavi_init para que inicialice nuestra función, quedará así:

1
2
3
function wp_pagenavi($before = '', $after = '') {
        global $wpdb, $wp_query;
                 pagenavi_init();

3.2 Agregamos el enlace a la hoja de estilos de la paginación, buscamos donde está en enlace al CSS de nuestro theme, (normalmente está en el header.php)

1
<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen" />

Y pegamos justo debajo el enlace a nuestro nuevo css

1
<link rel="stylesheet" type="text/css" media="screen" href="<?php bloginfo('template_url');?>/pagenavi-css.css" />

4. Para que la paginación aparezca en todas las páginas agregar el código siguiente en el footer.php o en el index.php, si no, pégalo solamente en la página en la que te interese. Habrá que colocarlo después de obtener los post que deseamos mostrar.

1
2
3
4
5
6
<div class="navigation" align=center>
        <?php
         include('includes/wp-pagenavi.php');
         if(function_exists('wp_pagenavi')) { wp_pagenavi(); }
        ?>
     </div>

5. Para obtener los post primero recuperamos el número de página en la que nos encontramos:

$paged = (get_query_var(‘paged’)) ? get_query_var(‘paged’) : 1;

6. Para obtener los post usaremos query_posts, si en tu theme usan el objeto $my_query = new WP_Query() es mejor que lo cambies para no tener problemas. Tendremos algo así:

query_posts(“posts_per_page=3&order=DESC&order_by=date&paged=$paged&category_name=Fotos”);

Post_per_page , es el número de post que se mostrarán por página.

Order , el orden el en que aparecerán, ascendiente o descendiente.
order_by , ordenar por unos campos en concreto, en este caso ordenamos por el campo date.

Paged , la página en la que nos encontramos .

Category_name , solo nos sacará aquellos post con categoria “Fotos”.

7. Mostramos los post mediante un bucle:

1
2
while (have_posts()) : the_post(); 
<?php endwhile;?>

8. Para evitar que nos muestre siempre la primera página es necesario limpiar la function query realizada, para ello termínanos con esta línea.

9. Una vez seguidos estos pasos nos debería quedar algo así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts("posts_per_page=3&order=DESC&order_by=date&paged=$paged&category_name=".$featured_category1); 
while (have_posts()) : the_post(); 
?>
<!—Aquí vendrá el formato que tendrán tus post.
<?php endwhile;?>
<?php global $more; $more = 0; ?>
     <div class="navigation" align=center>
        <?php
         include('includes/wp-pagenavi.php');
         if(function_exists('wp_pagenavi')) { wp_pagenavi(); }
        ?>
     </div>
Leer más

ROWNUM

Rownum es una pseudocolumna (no es real). Es un número virtual que se le asigna a los regitros devueltos por una select.

Hay que tener claro que no es un valor asignado permanentemente a una fila, por eso no podemos ejecutar la siguiente sentencia, ya que no es cierto que rownum sea 1 para la primera fila:

select * from PRUEBA where rownum = 1;
Cuando ejecutamos una sentencia se numera las filas del resultado asignándole al primer registro el valor para el rownum de 1 y el resto se va incrementando en 1. Se hace siempre que una fila pase por el FROM/WHERE de la tabla, antes que realice ninguna agrupación u ordenación.

Si tenemos este tipo de consulta:

select …, ROWNUM  from PRUEBA
 where [condiciones]  group by [campos] having [condicion]  order by [campo]

Este sería el orden en el que se realiza:

1. Se ejecuta la cláusula FROMWHERE
2. Se asigna el ROWNUM y se incrementa por cada fila que devuelva el FROMWHERE.
3. Aplica el SELECT
4. Aplica el GROUP BY
5. Aplica el HAVING
6. Aplica el ORDER BY

Vamos a verlo con un ejemplo. Si continuamos con la tabla de PRUEBA:

DNI                  DEPARTAMENTO       
——————– ——————–
0001                 Contabilidad       
0001                 Diseño             
0002                 Contabilidad       
0003                 Ventas             
0002                 Contabilidad       
0006                 Informatica        
0007                 Contabilidad       
0007                 Contabilidad       
0007                 Contabilidad       
0003                 Diseño             
0005                 Diseño             
0005                 Diseño             
0005                 Contabilidad       

Ahora intento recuperar 3 DNI por orden descendente:

SELECT *
FROM prueba
WHERE ROWNUM <= 3
ORDER BY dni DESC

DNI                  DEPARTAMENTO       
——————– ——————–
0002                 Contabilidad       
0001                 Contabilidad       
0001                 Diseño

Recupera las tres primeras filas ALEATORIAS que devuelve el FROM/WHERE y luego las ordena.
La select debería ordenar y luego recuperar los tres registros de esta manera:

select * from(SELECT *
FROM prueba
ORDER BY dni DESC)
WHERE ROWNUM <= 3;

DNI                  DEPARTAMENTO       
——————– ——————–
0007                 Contabilidad       
0007                 Contabilidad       
0007                 Contabilidad 

Y ahora aquí os dejo una select  para paginar registros utilizando el ROWNUM:

select *
  from ( select
  a.*, ROWNUM rnum
      from ( select * from PRUEBA
      order by 1) a
      where ROWNUM <= REGISTROFINAL ) where rnum  >= REGISTROINICIAL;

Leer más