WordPress选择最低的ID作为其主永久链接。然而ALL 类别将自动包含您的帖子。这两种含义:
。。。将通过重定向返回您的帖子(假设帖子A同时属于A类和B类)。抱歉,它无法在编辑页面上向您列出所有这些内容。但这将确保它们在所有类别中都可用。
当然get_permalink
将为您返回错误的。
http://codex.wordpress.org/Using_Permalinks#Using_.25category.25_with_multiple_categories_on_a_post
现在,关于重写行为,请参见:
http://core.trac.wordpress.org/browser/tags/3.3.1/wp-includes/link-template.php#L71, 特别是在第121行稍低一点。它将使用$cats[0]->slug
在按ID排序之后。它在里面似乎不以任何方式挂钩,所以要么更高,要么更低。
这张票将改变它的工作方式http://core.trac.wordpress.org/ticket/18752 不过,它被标记为将来的版本。订阅这张票来表达你的兴趣,也许它会在今年晚些时候进入WordPress 3.5。
这个pre_post_link
过滤器将允许您覆盖永久链接。post_link
, 也
或者,get_the_category
, 应该允许你破解帖子的ID(或者删除其他帖子只留下一个),但这应该only 请求永久链接时发生。
add_filter( \'pre_post_link\', function( $permalink, $post ) {
if ( strpos($permalink, \'%category%\') === false )
return; /* not interested */
add_filter( \'get_the_categories\', \'wpse46860_prune_categories\' );
return $permalink;
}, null, 2 );
function wpse46860_prune_categories( $categories ) {
/* run once */
remove_filter( \'get_the_categories\', \'wpse46860_prune_categories\' );
/* .. prune the categories to leave the one you need .. */
global $_hijack_post_id;
return $categories;
}
这是一次黑客攻击。
另一个困难是让post\\u ID根据get_the_categories
过滤器不会将post\\u ID传递给我们;使用全局(dirty)或类属性(clean)。
您可以尝试不同的permalink插件,如: