页面发布类型的每页固定链接结构

时间:2013-04-26 作者:JasonDavis

我正在尝试重写页面URL,以便它们以.htm

我可以用。。。

/* Add .htm extension to Page URL Links */
add_action(\'init\', \'htm_page_permalink\', -1);
function htm_page_permalink() {
    global $wp_rewrite;
    if ( !strpos($wp_rewrite->get_page_permastruct(), \'.htm\')){
        $wp_rewrite->page_structure = $wp_rewrite->page_structure . \'.htm\';
    }
}

/* Remove the trailing slash/ on Pages */
add_filter(\'user_trailingslashit\', \'no_page_slash\',66,2);
function no_page_slash($string, $type){
    global $wp_rewrite;
    if ($wp_rewrite->using_permalinks() && $wp_rewrite->use_trailing_slashes==true && $type == \'page\'){
        return untrailingslashit($string);
    }else{
        return $string;
    }
}
但后来我遇到了一个问题Blog 在名为的页面上发布列表Blog. 我需要这个页面NOT 结束于.htm

因此,我随后使用此代码更改页面链接以筛选出.htm 在我的blog

/* Filter .htm out of Blog Page Links */
function blog_page_url($content) {
    $current_path = \'/blog.htm\';
    $new_path = \'/blog/\';
    $content = str_replace($current_path, $new_path, $content);
    return $content;
}
add_filter(\'_get_page_link\', \'blog_page_url\');
我用这个重写规则/blog/ 加载Blog Page ...

/* Setup Custom Re-write for the Blog Page */
add_action( \'init\', \'blog_page_rewrite\' );
function blog_page_rewrite(){
    add_rewrite_rule(\'blog\', \'index.php?pagename=blog\',\'top\' );
    //add_rewrite_rule(\'blog/(.*?)/\', \'index.php?p=$matches[1]\',\'top\' );
}
但现在我有一个问题,任何带有/blog/ 其中显示Blog page.

这意味着我的实际博客帖子是在WP Permalink设置中设置的,就像这样。。。

/blog/%postname%/ 不起作用,相反,他们总是显示Blog page 其中列出了所有博客帖子。

在我的blog_page_rewrite() 你可以看到,我测试了一个额外的重写规则,希望可以处理博客帖子,但并没有任何影响。

1 个回复
SO网友:Pat J

你的博客页面是在后端设置的吗Settings > Reading > Posts page? 如果是,请尝试在第一个函数中检查:

/* Add .htm extension to Page URL Links */
add_action(\'init\', \'htm_page_permalink\', -1);
function htm_page_permalink() {
    global $post;
    if( get_option( \'page_for_posts\' ) == $post->ID ) {
         // don\'t add .htm to this page
         return;
    }
    global $wp_rewrite;
    if ( !strpos($wp_rewrite->get_page_permastruct(), \'.htm\')){
        $wp_rewrite->page_structure = $wp_rewrite->page_structure . \'.htm\';
    }
}
TheOption Reference 指给我看page_for_posts.

结束

相关推荐

hide wp-content from urls

下面是我想从页面源中包含的文件的URL中隐藏wp内容的想法。在wp设置中定义以下内容。phpdefine (\'WP_CONTENT_URL\',\'http://example.com/myownfoldername\'); 并将此添加到.htaccessRewriteRule ^myownfoldername/(.*) /wp-content/$1 [QSA,L] 在localhost上没有其他插件的情况下,这似乎可以很好地工作,但在只有几个插件的在线站点上,它可以无缝地工作。我更