Crear un Paginador en Wordpress 馃嚰


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
    }
}



Comentarios

Facebook Like

Entri Populer

hackear wifi con kali linux 馃摗

Instalar Netbeans 10 en Windows 10

Instalar netbeans 10 en ubuntu 18.04