在固定链接中使用类别名称而不是类别插件

时间:2013-04-19 作者:whiteletters in blankpapers

如何创建永久链接结构,该结构通过以下方式完成:

/category-name/post-name/
而不是:

/category-slug/post-name/
默认情况下,Wordpress提供%category% 将结构标记为“类别名称的净化版本(新建/编辑类别面板上的类别slug字段)”。

如何在permalinks中使用类别名称而不是类别slug?

Note 我不需要让我的鼻涕虫与我的类别名称相等的最简单的解决方案。事实上,客户需要在编辑帖子的区域中查看:特定的非Alpahbetic顺序中的类别。因此,我成功地做到了这一点,为类别提供了一个数字作为slug,并使用以下命令在ASC模式下按slug显示类别:

add_filter( \'get_terms_args\', \'wpse_53094_sort_get_terms_args\', 10, 2 );
function wpse_53094_sort_get_terms_args( $args, $taxonomies ) 
{
    global $pagenow;
    if( !is_admin() || (\'post.php\' != $pagenow && \'post-new.php\' != $pagenow) ) 
        return $args;

    $args[\'orderby\'] = \'slug\';
    $args[\'order\'] = \'ASC\';

    return $args;
}
我想如果我不设法使用t f 解决方案,我将寻找一个代码或插件,添加分类元字段和按此字段在ASC模式下的顺序。然后我将我的鼻涕虫重命名为相同的类别名称。你认为这种方法怎么样?

感谢您的评论

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

我没有对此进行测试,但这应该满足您的要求。将以下内容放入functions.php:

add_filter(\'rewrite_rules_array\', \'new_category_name_rewrite_rule\');
function new_category_name_rewrite_rule($rules) {
    $new_rules = array();
    $categories = get_categories();
    foreach ($categories as $category) {
        $cat_name = preg_replace(\'#\\s+#\', \'-\', $category->name);
        $new_rules[\'/\'.$category->slug.\'/\'] = \'/\'.urlencode($cat_name).\'/\';
    }
    return $new_rules + $rules;
}

结束

相关推荐

get_categories() for only CPT

在我正在工作的网站上,我有作为自定义帖子类型的作业和作为自定义分类法的位置。这些位置由作业、职位和其他CPT使用。我正在为这些工作制作一个小过滤器,并希望将所有位置的列表显示为链接,单击其中一个后,它将对页面进行排序,以仅显示该位置的工作。使用简单链接查询。我正在使用get_categories() 生成位置列表,但该函数的问题是,它不允许我指定帖子类型并显示所有具有任何类型帖子的位置。因此,我最终得到了一个并非所有位置都有工作的列表,当单击该链接时,它将显示404页。 <?p