如何控制哪个类别将被选为帖子的弹头?

时间:2012-03-26 作者:TigrouMeow

我使用的是permalink结构“/%category%/%postname%/”。

让我烦恼的是,我的帖子分为两类。当然,不幸的是,Wordpress总是为slug一代选择错误的版本。

有没有一个好的、干净的方法来控制哪些类别将被选为post Slug?

非常感谢!

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

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插件,如:

SO网友:Travis Pflanz

你可以随时使用插件。Hikari Category Permalink 完全符合您的要求。。。没有任何麻烦。

SO网友:Rajeev Vyas

如果您可以将想要的类别保存为默认永久链接,那么您可以使用“pre\\u post\\u link”过滤器挂接到get\\u permalink函数。。。。

这可能也会有帮助,看看。。http://shibashake.com/wordpress-theme/wordpress-permalink-add

结束

相关推荐

Php分页和Query_Posts()

标签上有一些问题。php页面。现在它只是给我一个“无需显示”如果我没有查询它会显示帖子,但我想更改每页的帖子数量。在这种情况下,更改管理中的阅读设置不是一个选项,所以我只寻找模板标签的想法。有没有关于如何正确重写的建议?谢谢,如果这个问题真的很无聊,很抱歉。<?php $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1; $tags = array( \'posts_p