Ayuda para poner paginacion en mi tema wordpress

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.
 

SexoBravo

Suspendido
Mensajes
5
Puntuación de reacción
0
Hay varios plugins que te lo hacen y los puedes personalizar.

- WP-Paginate
- WP-PageNavi

Tal vez otro usuario te pueda recomendar algun otro!
 
Mensajes
144
Puntuación de reacción
0
Yo simplemente he colocado el siguiente código en el archivo function.php
PHP:
// 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' => __('&laquo'),
		'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

Luego un poco de css
PHP:
.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 { }
 
Arriba