/pasOrganications/%CATEGORY%-%PostName%.html的自定义重写规则

时间:2013-02-01 作者:yoyodyne

我已经研究这个一个多星期了。我尝试了一些关于自定义重写规则和自定义帖子类型的教程,但我仍然不确定应该朝哪个方向进行。这绝对是必须的。这是一个大型客户端,需要保留来自可移动类型环境的相同链接结构:

WP--->http://www.domain.com/pastissues/category/here-is-the-postname.html- 在wordpress上工作

MT--->http://www.domain.com/pastissues/multiple-word-category-orsingle-one-here-is-the-postname.html- 可移动类型的工作

我尝试过:

/pastissues/%category%-%postname%。html-->这将生成外观右侧的链接,但如果文章的类别超过一个单词,则在我请求文章时失败。

所以我可能需要编写一个定制的permalink插件。我已经尝试过查找可用的插件,但定制永久链接对我没有帮助,因为我是一个多站点安装。

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

最后,我得出了以下结论。如果您编写或使用迁移脚本将MT3或4数据转换为WP映射,那么执行上述操作是可行的。。。例如Title、Primary Category等。因此,假设一切正常,然后将由连字符分隔的类别名称连接到标题上,使其成为进入Wordpress的postname(以某种方式在迁移脚本中执行此操作)。然后为所有内容分配一个永久结构:/pastissues/%postname%。html。从设置->永久链接GUI。

这将适用于迁移的帖子。尽管如此,对于迁移后的任何内容,客户端仍希望持续的永久结构为%day%/%month%/%year%/%postname%/。这是完全可以理解的。

因此,我的解决方案是导入贴子,并将其关联的类别名称连接到标题上,以生成贴子名称(我真的认为这只适用于单个类别到文章的分配……而不是来自可移动类型的多个类别到文章),然后使所有这些贴子成为某种自定义贴子类型。

接下来,在one编写的自定义帖子类型插件中为他们分配一个permalink结构,或者使用wp\\u permalinks插件将permalink分配给pastissue帖子类型。然后使用permalink gui为未来的新帖子分配%日%/%月5/%年%/%postname%/结构。

SO网友:Alex

或者,你可以这样做——在头脑清醒后,花一天时间寻找解决方案:

您必须在register\\u post\\u type()中设置“rewrite”=>false;并在关闭register\\u post\\u type()后添加:

// 404 CPT permalink WP bug...
global $wp_rewrite;
$projet_structure = \'/projets/%projet%\';
$wp_rewrite->add_rewrite_tag("%projet%", \'([^/]+)\', "projet=");
$wp_rewrite->add_permastruct(\'projet\', $projet_structure, false);
在哪里projet 是我的CPT

看见here for more.

享受

SO网友:Jonathan

最近我不得不处理自定义帖子类型和自定义永久链接。以下是一些如何做到这一点的示例(包括类别):
http://xplus3.net/2010/05/20/wp3-custom-post-type-permalinks/

custom slug for custom post type

似乎在实现此功能后,您将得到404,除非您转到设置-->永久链接并按保存;这将重建URL解析器规则集或类似的内容。

如果你仍然得到404,你可能会遇到与我相同的问题。在这种情况下,您需要添加add\\u rewrite\\u标记,正如Milo引导我到这里:
Custom post type 404s with rewriting even after resetting permalinks

结束

相关推荐

widgetlogic and permalinks

我试图使用widgetlogic在某些页面上有条件地显示菜单。每个菜单都使用如下标记is_page(array(\"Page Name\", \"Page Name 2\" ...)), 在我尝试更改permalinks之前,它一直工作得很好(因此所有菜单都会从各自的页面中消失)。我做错什么了吗?是否有解决方法?