- Mensajes
- 23
- Puntuación de reacción
- 0
Hola a todos, necesito ayuda para poder poner una paginacion de todos mis posts en la pagina principal. Mi tema por defecto no trae esta opcion , así que no se si habra otra forma de integrarlo.
// Inicio paginacion
function emm_paginate($args = null) {
$defaults = array(
'page' => null, 'pages' => null,
'range' => 2, 'gap' => 2, 'anchor' => 1,
'before' => '<div class="emm-paginate">', 'after' => '</div>',
'nextpage' => __('»'), 'previouspage' => __('«'),
'echo' => 1
);
$r = wp_parse_args($args, $defaults);
extract($r, EXTR_SKIP);
if (!$page && !$pages) {
global $wp_query;
$page = get_query_var('paged');
$page = !empty($page) ? intval($page) : 1;
$posts_per_page = intval(get_query_var('posts_per_page'));
$pages = intval(ceil($wp_query->found_posts / $posts_per_page));
}
$output = "";
if ($pages > 1) {
$output .= "$before<span class='emm-title'>$title</span>";
$ellipsis = "<span class='emm-gap'>...</span>";
if ($page > 1 && !empty($previouspage)) {
$output .= "<a href='" . get_pagenum_link($page - 1) . "' class='emm-prev'>$previouspage</a>";
}
$min_links = $range * 2 + 1;
$block_min = min($page - $range, $pages - $min_links);
$block_high = max($page + $range, $min_links);
$left_gap = (($block_min - $anchor - $gap) > 0) ? true : false;
$right_gap = (($block_high + $anchor + $gap) < $pages) ? true : false;
if ($left_gap && !$right_gap) {
$output .= sprintf('%s%s%s',
emm_paginate_loop(1, $anchor),
$ellipsis,
emm_paginate_loop($block_min, $pages, $page)
);
}
else if ($left_gap && $right_gap) {
$output .= sprintf('%s%s%s%s%s',
emm_paginate_loop(1, $anchor),
$ellipsis,
emm_paginate_loop($block_min, $block_high, $page),
$ellipsis,
emm_paginate_loop(($pages - $anchor + 1), $pages)
);
}
else if ($right_gap && !$left_gap) {
$output .= sprintf('%s%s%s',
emm_paginate_loop(1, $block_high, $page),
$ellipsis,
emm_paginate_loop(($pages - $anchor + 1), $pages)
);
}
else {
$output .= emm_paginate_loop(1, $pages, $page);
}
if ($page < $pages && !empty($nextpage)) {
$output .= "<a href='" . get_pagenum_link($page + 1) . "' class='emm-next'>$nextpage</a>";
}
$output .= $after;
}
if ($echo) {
echo $output;
}
return $output;
}
function emm_paginate_loop($start, $max, $page = 0) {
$output = "";
for ($i = $start; $i <= $max; $i++) {
$output .= ($page === intval($i))
? "<span class='emm-page emm-current'>$i</span>"
: "<a href='" . get_pagenum_link($i) . "' class='emm-page'>$i</a>";
}
return $output;
}
// Fin paginacion
.emm-paginate { font-size: 16px }
.emm-paginate a {
background: #ddd;
border: 1px solid #DDD;
color: #666;
margin-right: 3px;
padding: 3px 5px;
text-align: center;
text-decoration: none;
}
.emm-paginate a:hover,
.emm-paginate a:active {
background: #DDD;
color: #888;
}
.emm-paginate .emm-title {
color: #555;
margin-right: 4px;
}
.emm-paginate .emm-gap {
color: #999;
margin-right: 4px;
}
.emm-paginate .emm-current {
color: #fff;
background: #1E85BE;
border: 1px solid #89adcf;
margin-right: 3px;
padding: 3px 5px;
}
.emm-paginate .emm-page { }
.emm-paginate .emm-prev,
.emm-paginate .emm-next { }