Forum Replies Created

Viewing 5 replies - 1 through 5 (of 5 total)
  • Thread Starter s.pescina

    (@spescina)

    You have 2 custom queries and the one you are passing to the wp_paginate function doesn’t have the paged var.

    It seems to me you have to simply delete the second last line and then call wp_paginate(false,$my_query);

    let me know

    bye

    Thread Starter s.pescina

    (@spescina)

    please post here your template code so I can figure out what’s the problem.

    bye

    Thread Starter s.pescina

    (@spescina)

    Hi Jameson.
    No, I didn’t plan anything. I don’t know how to work in this open source situations… Are there any rules to follow?

    Anyway, I don’t think to have the time for this right now, so you can do whatever you want.

    Only try to keep open this thread, please.
    Thank you.

    Thread Starter s.pescina

    (@spescina)

    I think you only have to append the page number to your custom query.
    With get_query_var function you can take page parameter passed to the page by the url.

    $current_page = (get_query_var('paged')) ? get_query_var('paged') : 1;
    $my_query = new WP_Query('category_name=news&posts_per_page=5&paged='.$current_page);

    Wp-paginate takes only care of the navigation system. The plugin doesn’t do nothing on the query wp executes so you have to built it by yourself.

    Thread Starter s.pescina

    (@spescina)

    These are the changes I made in wp-paginate.php

    /**
     * Pagination based on options/args
     */
    function paginate($args = false,$wp_query = false) {
    	if ($this->type === 'comments' && !get_option('page_comments'))
    		return;
    
    	$r = wp_parse_args($args, $this->options);
    	extract($r, EXTR_SKIP);
    
    	if (!isset($page) && !isset($pages)) {
    
    		if ($this->type === 'posts') {
    			if(!$wp_query){
    				global $wp_query;
    				$posts_per_page = get_query_var('posts_per_page');
    				$page = get_query_var('paged');
    			} else {
    				$posts_per_page = $wp_query->query_vars['posts_per_page'];
    				$page = $wp_query->query_vars['paged'];
    			}
    			$pages = intval(ceil($wp_query->found_posts / $posts_per_page));
    		}
    		else {
    			$page = get_query_var('cpage');
    			$comments_per_page = get_option('comments_per_page');
    			$pages = get_comment_pages_count();
    		}
    		$page = !empty($page) ? intval($page) : 1;
    	}
    
    	$prevlink = ($this->type === 'posts')
    		? esc_url(get_pagenum_link($page - 1))
    		: get_comments_pagenum_link($page - 1);
    	$nextlink = ($this->type === 'posts')
    		? esc_url(get_pagenum_link($page + 1))
    		: get_comments_pagenum_link($page + 1);
    
    	$output = stripslashes($before);
    	if ($pages > 1) {
    		$output .= sprintf('<ol class="wp-paginate%s">', ($this->type === 'posts') ? '' : ' wp-paginate-comments');
    		$output .= sprintf('<li><span class="title">%s</span></li>', stripslashes($title));
    		$ellipsis = "<li><span class='gap'>...</span></li>";
    
    		if ($page > 1 && !empty($previouspage)) {
    			$output .= sprintf('<li><a href="%s" class="prev">%s</a></li>', $prevlink, stripslashes($previouspage));
    		}
    
    		$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',
    				$this->paginate_loop(1, $anchor),
    				$ellipsis,
    				$this->paginate_loop($block_min, $pages, $page)
    			);
    		}
    		else if ($left_gap && $right_gap) {
    			$output .= sprintf('%s%s%s%s%s',
    				$this->paginate_loop(1, $anchor),
    				$ellipsis,
    				$this->paginate_loop($block_min, $block_high, $page),
    				$ellipsis,
    				$this->paginate_loop(($pages - $anchor + 1), $pages)
    			);
    		}
    		else if ($right_gap && !$left_gap) {
    			$output .= sprintf('%s%s%s',
    				$this->paginate_loop(1, $block_high, $page),
    				$ellipsis,
    				$this->paginate_loop(($pages - $anchor + 1), $pages)
    			);
    		}
    		else {
    			$output .= $this->paginate_loop(1, $pages, $page);
    		}
    
    		if ($page < $pages && !empty($nextpage)) {
    			$output .= sprintf('<li><a href="%s" class="next">%s</a></li>', $nextlink, stripslashes($nextpage));
    		}
    		$output .= "</ol>";
    	}
    	$output .= stripslashes($after);
    
    	if ($pages > 1 || $empty) {
    		echo $output;
    	}
    }

    and

    /**
     * Pagination function to use for posts
     */
    function wp_paginate($args = false,$wp_query = false) {
    	global $wp_paginate;
    	$wp_paginate->type = 'posts';
    	return $wp_paginate->paginate($args,$wp_query);
    }

    Then in my theme files I used plugin function in this way:

    $custom_query = new WP_Query([***your custom query here***]);
    wp_paginate(false,$custom_query);

    Hope this helps.
    Bye

Viewing 5 replies - 1 through 5 (of 5 total)