将.html(点HTML)扩展名添加到自定义帖子类型

时间:2012-07-19 作者:user983248

有没有办法添加.html 自定义帖子类型的扩展without plugin ?

对于我可以使用的帖子/%postname.html 在永久链接设置上

对于我可以使用的页面:

add_action(\'init\', \'change_page_permalink\', -1);
function change_page_permalink() {
    global $wp_rewrite;
    if ( strstr($wp_rewrite->get_page_permastruct(), \'.html\') != \'.html\' ) 
        $wp_rewrite->page_structure = $wp_rewrite->page_structure . \'.html\';
}
自定义帖子类型???

是否有任何类似于上面的代码可以让我更改或添加.html 在自定义帖子类型url上?

3 个回复
最合适的回答,由SO网友:vmassuchetto 整理而成

这似乎有效:

创建重写规则,如post-type/post-name.html. 您可以使用数组仅为某些帖子类型集创建规则,而不是为所有帖子类型创建规则。

add_action( \'rewrite_rules_array\', \'rewrite_rules\' );
function rewrite_rules( $rules ) {
    $new_rules = array();
    foreach ( get_post_types() as $t )
        $new_rules[ $t . \'/([^/]+)\\.html$\' ] = \'index.php?post_type=\' . $t . \'&name=$matches[1]\';
    return $new_rules + $rules;
}
设置这些帖子类型的新permalink结构的格式。

add_filter( \'post_type_link\', \'custom_post_permalink\' ); // for cpt post_type_link (rather than post_link)
function custom_post_permalink ( $post_link ) {
    global $post;
    $type = get_post_type( $post->ID );
    return home_url( $type . \'/\' . $post->post_name . \'.html\' );
}
然后停止重定向规范URL以删除尾部斜杠。这可能需要更多的工作,因为您可能希望在大多数情况下保持重定向。

add_filter( \'redirect_canonical\', \'__return_false\' );
正如这里的其他人所说,完成上述操作后,您需要刷新规则,这可以通过访问options-permalink.php 中的管理页Dashboard -> Settings -> Permalinks.

SO网友:Matthew Boynes

您可以为此添加重写规则,以取代内置的永久链接,例如,对于自定义帖子类型“product”。。。

add_action(\'init\', \'add_html_ext_to_custom_post_types\');
function add_html_ext_to_custom_post_types() {
    add_rewrite_rule(\'^product/([^/]+)\\.html\', \'index.php?product=$matches[1]\', \'top\');
}
(不要忘记刷新规则,方法是重新保存永久链接或使用flush_rules 以上述@toscho注释的方式)。

注意事项我不认为the_permalink() 将使用此选项,因此您可能需要为post_link 捕捉这些链接。您还可以添加到redirect_canonical 筛选以重定向默认永久链接,以便/product/foo和/product/foo/重定向到/product/foo。html

SO网友:Michael Ecklund

如果你喜欢WordPress插件来为你处理这项工作,请查看Custom Post Type Permalinks 在WordPress插件库中。在WordPress 3.4.1上测试,效果完美。

激活插件后,只需导航到Dashboard->Settings->Permalinks。您可以为每个注册的自定义帖子类型添加特定的重写。

结束

相关推荐

Expiring Unique URLs

所以前几天我想为客户的网站开发一个新功能。每次新访问者单击Wordpress中的特定按钮时的唯一下载URL整个过程是如何进行的:比如说,我的网站左侧小部件区域有一个按钮,上面写着“立即下载电子书”。-我需要将每个访问者重定向到一个唯一的URL(该URL将在x个时间后过期)-在单独的页面上,下载链接将正常提供您是否知道是否有插件或脚本可以处理这样的任务或其他解决方案来实现这一点?谢谢