WordPress.org

Ready to get started?Download WordPress

Forums

[resolved] problem with "next page" url (16 posts)

  1. RecoilMP
    Member
    Posted 7 years ago #

    Hi

    I run the web log 'www.spraakwater.net' (dutch). That's a cloaked url to the real blog 'http://www.c-mon.nl/blog' Because i've set the wordpress address to c-mon.nl/blog and the blog adress to spraakwater.net in the options menu this all works well.

    Except of one php function: the "next page" function which is displayed at the bottom of the page when the homepage contains more than ,in this case, 10 posts.
    The problem is that it doesn't adapt to the cloaked URL while other links such as the archive function works well.

    Thus the 'next page' php function refers to 'http://www.spraakwater.net/blog/index.php?paged=2' while it should refer to 'http://www.c-mon.nl/blog/index.php?paged=2'.

    You can see it yourself at the bottom of spraakwater.net if you don't understand my question.

    How do i fix this?

  2. moshu
    Member
    Posted 7 years ago #

    As far as I know - you cannot.
    That's the "trap" if you use this kind of redirect settings.

  3. RecoilMP
    Member
    Posted 7 years ago #

    So i can't 'hack' some kind of php file to set a fixed prefix for the previous/next page function?

  4. moshu
    Member
    Posted 7 years ago #

    Maybe you can... but I am not a coder, have no idea where those functions are defined.

  5. RecoilMP
    Member
    Posted 7 years ago #

    Thanks for your help anyway! :) That's why i love the open-source community.

    Can any coder please look at this case? I've already found the php file that defines the function (template-functions-links.php) but my PHP knowledge is too little to create a workaround by myself.

  6. RecoilMP
    Member
    Posted 7 years ago #

    Can't anyone help?

  7. icd10
    Member
    Posted 7 years ago #

    http://www.spraakwater.net/blog/index.php?paged=2' while it should refer to 'http://www.c-mon.nl/blog/index.php?paged=2'.

    Did you mean it should refer to
    http://www.spraakwater.net/?paged=2
    like all other links on you page?

  8. RecoilMP
    Member
    Posted 7 years ago #

    Yes, thats what i mean.

  9. icd10
    Member
    Posted 7 years ago #

    In the file
    wp-includes/template-functions-links.php

    you'll find the function get_pagenum_link it defines a variable $index, in which 'http://www.spraakwater.net/blog/index.php' is stored.

  10. RecoilMP
    Member
    Posted 7 years ago #

    Ok, in wich way should i change it?

  11. icd10
    Member
    Posted 7 years ago #

    if you never want to move your blog again insert a line before the link is echoed:

    $index= "http://www.spraakwater.net/";

    You have to redo it if you update your blog.
    It looks like a code-error (because the other links are ok).

  12. RecoilMP
    Member
    Posted 7 years ago #

    Should i remove all of this and replace it by that single line?

    $index = $_SERVER['PHP_SELF'];
    $index = preg_replace('|^'. $home_root . '|', '', $index);
    $index = preg_replace('|^/+|', '', $index);

    // if we already have a QUERY style page string
    if ( stristr( $qstr, $page_querystring ) ) {
    $replacement = "$page_querystring=$pagenum";
    $qstr = preg_replace("/".$page_querystring."[^\d]+\d+/", $replacement, $qstr);
    // if we already have a mod_rewrite style page string
    } elseif ( preg_match( '|'.$page_modregex.'\d+|', $qstr ) ) {
    $permalink = 1;
    $qstr = preg_replace('|'.$page_modregex.'\d+|',"$page_modstring$pagenum",$qstr);

    // if we don't have a page string at all ...
    // lets see what sort of URL we have...
    } else {
    // we need to know the way queries are being written
    // if there's a querystring_start (a "?" usually), it's definitely not mod_rewritten
    if ( stristr( $qstr, '?' ) ) {
    // so append the query string (using &, since we already have ?)
    $qstr .= '&' . $page_querystring . '=' . $pagenum;
    // otherwise, it could be rewritten, OR just the default index ...
    } elseif( '' != get_settings('permalink_structure') && ! is_admin() ) {
    $permalink = 1;
    $index = $wp_rewrite->index;
    // If it's not a path info permalink structure, trim the index.
    if ( !$wp_rewrite->using_index_permalinks() ) {
    $qstr = preg_replace("#/*" . $index . "/*#", '/', $qstr);
    } else {
    // If using path info style permalinks, make sure the index is in
    // the URI.
    if ( strpos($qstr, $index) === false )
    $qstr = '/' . $index . $qstr;
    }

    $qstr = trailingslashit($qstr) . $page_modstring . $pagenum;
    } else {
    $qstr = $index . '?' . $page_querystring . '=' . $pagenum;
    }
    }

    $qstr = preg_replace('|^/+|', '', $qstr);
    if ( $permalink )
    $qstr = trailingslashit($qstr);
    $qstr = preg_replace('/&([^#])(?![a-z]{1,8};)/', '&$1', trailingslashit( get_settings('home') ) . $qstr );

    // showing /page/1/ or ?paged=1 is redundant
    if ( 1 === $pagenum ) {
    $qstr = str_replace('page/1/', '', $qstr); // for mod_rewrite style
    $qstr = remove_query_arg('paged', $qstr); // for query style
    }
    return $qstr;
    }

  13. icd10
    Member
    Posted 7 years ago #

    No,
    perhaps it isn't working, so just add one line:

    $qstr = str_replace('page/1/', '', $qstr); // for mod_rewrite style
    $qstr = remove_query_arg('paged', $qstr); // for query style
    }

    # new line for pagelinks
    $qstr = 'http://www.spraakwater.net/?' . $page_querystring . '=' . $pagenum;

    return $qstr;
    }

    if you want to delete it later, you just have to remove this one line.

  14. RecoilMP
    Member
    Posted 7 years ago #

    I'm grateful for the fact that there are people like you! Many, many thanks, i would never have found a solution by myself. :D

  15. wlappe
    Member
    Posted 7 years ago #

    And I'm grateful too!! I'm been looking at code for two days, and finally when I decide the get_pagenum_link zone were the problem I found it. Many thanks. I would not have resolved the problem by myself

  16. windwheel
    Member
    Posted 7 years ago #

    If you use

    $qstr = 'http://www.spraakwater.net/?' . $page_querystring . '=' . $pagenum;

    You'll find another bug , if you go to your catagory pages or achive pages you'll find the page-links are error,they will jump to index pages.

    You may use this sigle line to replace it, then everything will go perfect.

    $qstr = preg_replace("#/*" . $index . "/*#", '/', $qstr);

    that means to trim the $index

Topic Closed

This topic has been closed to new replies.

About this Topic