Crear un Paginador en WordPress ?

Crear%2Bun%2Bpaginador%2Ben%2BWordpress


Cuando creamos nuestro propio plugin en ocaciones es necesario manejar grandes cantidades de registros por lo que debemos segmentarlos en ciertas cantidades (de 10 en 10 o de 15 en 15).
En la carpeta “wp-content/plugins/” vamos a crear la carpeta paginador en donde creamos un archivo paginador.php en el cual colocaremos el siguiente codigo:

<?php
/*
Plugin Name: paginador
Plugin URI:
Description:
Version: 1.0.0
Author:
Author URI:
License: GPLv2
*/

//INICIALIZA LA CONFIGURACION
add_action("admin_menu", "opciones_de_admin");
if (!function_exists("opciones_de_admin")) {
function opciones_de_admin() {
add_options_page("Paginador", "Paginador", "manage_options", "id_menu", "ec_ver_actual");
}
}

if (!function_exists("ec_ver_actual")) {
function ec_ver_actual() {
//Variable que nos proporciona la conexion a la bd
global $wpdb;
//Obtenemos la cantidad total de articulos
$sqlTotalReg = "
SELECT
posts.ID,
posts.post_title
FROM
" . $wpdb->prefix . "posts as posts
WHERE
posts.post_type='post' AND
posts.post_status='publish'";
$resultTotalReg = $wpdb->get_results($sqlTotalReg, OBJECT);
$numTotalRegistros = count($resultTotalReg);
//Cantidad de registros por pagina
$tamanoPagina = 10;
//Jalamos las variables del paginador para calcular el offset
if ((isset($_GET['paged'])) && ($_GET['paged'] != '')) {
$offset = ($_GET['paged'] - 1) * $tamanoPagina;
}
else {
$offset = 0;
}
//Query que obtiene todos los articulos
$sql = "
SELECT
posts.ID,
posts.post_title
FROM " . $wpdb->prefix . "posts as posts
WHERE
posts.post_type='post' AND
posts.post_status='publish'
ORDER BY post_date DESC
LIMIT " . $tamanoPagina . "
OFFSET " . $offset . "; ";
$result = $wpdb->get_results($sql, OBJECT);
?>
<table class="wp-list-table widefat fixed striped posts">
<thead>
<tr>
<th scope="col" class="manage-column column-tags">Id</th>
<th scope="col" class="manage-column column-tags">Titulo</th>
</tr>
</thead>
<tbody id="the-list">
<?php
foreach ($result as $contador => $articulo) {
?>
<tr>
<td>
<strong><?php echo $articulo->ID; ?></strong>
</td>
<td>
<strong><?php echo $articulo->post_title; ?></strong>
</td>
<tr>
<?php
}
?>
</tbody>
</table>
<?php
//Examino la página a mostrar y el inicio del registro a mostrar
$pagina = $_GET["pagina"];
if (!$pagina) {
$inicio = 0;
$pagina = 1;
}
else {
$inicio = ($pagina - 1) * $tamanoPagina;
}
//Calculo el total de páginas
$totalPaginas = (round($numTotalRegistros / $tamanoPagina)) + 1;
?>
<div class="paginate">
<?php
if ((isset($_GET['paged'])) && ($_GET['paged'] != '')) {
$current = $_GET['paged'];
}
else {
$current = 0;
}
$args = array(
'base' => '%_%',
'format' => '?paged=%#%',
'total' => $totalPaginas,
'current' => $current,
'show_all' => false,
'end_size' => 3,
'mid_size' => 1,
'prev_next' => true,
'prev_text' => __('« Anterior'),
'next_text' => __('Siguiente »'),
'type' => 'plain',
'add_args' => false,
'add_fragment' => '',
'before_page_number' => '',
'after_page_number' => ''
);
?>
<?php echo paginate_links($args); ?>
</div>
<?php
}
}

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

En Programador Novato vivimos de los anuncios, hemos detectado que está utilizando extensiones para bloquear anuncios. Ayudanos deshabilitando tu bloqueador de anuncios. :)