Wordpress重写仅为页面添加基本前缀

时间:2013-07-12 11:20:05

标签: wordpress url-rewriting rewrite permalinks

我在尝试完成项目时遇到了一个问题。

  1. 我将当前永久链接结构设置为/%postname%/
  2. 我只为帖子添加了前缀,因此我的帖子被重写为/ {prefix} /%postname%/。
  3. 我的问题是我想改变页面的永久链接,就像我对帖子所做的那样,所以我的页面会有一个像/{prefix}/%pagename%/.

    我尝试过但没有工作:

    1. 重新声明PAGES帖子类型并设置重写slug。
    2. 尝试将自定义重写规则添加为函数但不起作用:

      $ rewrite_rules + = array('mycustomprefix /(。+?)/([0-9] +)/([^ /] +)/([^ /] +)/?$'=>'的index.php?页面名= $匹配[1]”,

    3. 这可能吗?是否有任何开发人员遇到同样的问题?

3 个答案:

答案 0 :(得分:2)

对于任何有兴趣的人,我已按以下方式解决了我的问题:

function change_author_permalinks() {
global $wp_rewrite;
// Change the value of the author permalink base to whatever you want here
$wp_rewrite->author_base = '';
// Change the value of the page permalink base to whatever you want here
$wp_rewrite->page_structure = 'static/%pagename%';
$wp_rewrite->flush_rules();
}
add_action('init','change_author_permalinks');

希望这有助于其他人,因为我无法在任何地方找到任何帮助。有关可以通过这种方式更改内容的更多信息,请查看http://codex.wordpress.org/Class_Reference/WP_Rewrite

答案 1 :(得分:0)

在将此重写添加到functions.php之后,您是否更新了永久链接结构?它对我有用:)

add_filter( 'page_rewrite_rules', 'customprefix_page_rewrite_rules' );
function customprefix_page_rewrite_rules( $rewrite_rules )
{
    end( $rewrite_rules );
    $last_pattern = key( $rewrite_rules );
    $last_replacement = array_pop( $rewrite_rules );
    $rewrite_rules +=  array(
        'mycustomprefix/(.+?)/?$' => 'index.php?pagename=$matches[1]',
        $last_pattern => $last_replacement,
    );
    return $rewrite_rules;
}

答案 2 :(得分:0)

我发现这个解决方案对我来说更好......而且它的代码也更清晰。

add_action( 'init', 'custom_page_rules' );

function custom_page_rules() {
  global $wp_rewrite;
  $wp_rewrite->page_structure = $wp_rewrite->root . 'your-page-prefix/%pagename%'; 
}

我在这里找到了代码:http://wpforce.com/change-wordpress-page-permalinks/