在现有帖子类型/分类上添加/覆盖参数

时间:2011-05-17 作者:supertrue

我有几个网站,有不同插件注册的自定义帖子类型和分类法。有没有办法添加或更改如下参数:

\'rewrite\' => array( \'hierarchical\' => true )
通过向函数添加内容。php而不完全重新注册类型/分类法?我想继续使用某些插件来管理类型和分类法,但并没有提供所有参数。

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

您可以修改全局变量$wp\\u post\\u type,如果是分类法,则可以修改$wp\\u taxonomies

例如,这会将菜单名称和默认帖子的所有标签更改为Bacon:

function change_post_menu_label() {
    global $menu;
    global $submenu;
    $menu[5][0] = \'Bacon\';
    $submenu[\'edit.php\'][5][0] = \'Bacon\';
    $submenu[\'edit.php\'][10][0] = \'Add Bacon\';
    $submenu[\'edit.php\'][16][0] = \'Bacon Tags\';
    echo \'\';
}
function change_post_object_label() {
    global $wp_post_types;
    $labels = &$wp_post_types[\'post\']->labels;
    $labels->name = \'Bacon\';
    $labels->singular_name = \'Bacon\';
    $labels->add_new = \'Add Bacon\';
    $labels->add_new_item = \'Add Bacon\';
    $labels->edit_item = \'Edit Bacon\';
    $labels->new_item = \'Bacon\';
    $labels->view_item = \'View Bacon\';
    $labels->search_items = \'Search Bacon\';
    $labels->not_found = \'No Bacon found\';
    $labels->not_found_in_trash = \'No Bacon found in Trash\';
}
add_action( \'init\', \'change_post_object_label\' );
add_action( \'admin_menu\', \'change_post_menu_label\' );
资料来源:http://new2wp.com/snippet/change-wordpress-posts-post-type-news/

SO网友:mrwweb

WordPress有多个功能,允许您尝试做的事情类型。

签出:

如果要删除分类法,必须使用register\\u taxonomy()重新注册它,然后从$object\\u type参数的数组中省略不需要的post类型。然后,确保将函数挂接到第一次注册后运行的钩子上(或者挂在同一钩子上,但优先级较低)。

p、 很抱歉,我无法链接到所有这些(没有足够的信誉点)。所有这些函数在codex中都有条目;只需谷歌一下。

SO网友:Larzan

由于WordPress 4.4有一个钩子可用于该用例,因此称为register_taxonomy_args.

它允许您在实际注册分类法之前修改分类法的参数,甚至可以用于内部分类法。

下面是一个将“类别”分类URL设置为分层的示例:

function NAMESPACE_register_taxonomy_args( $args, $taxonomy ) {
  if ( $taxonomy === \'category\' ) {
    $args[\'rewrite\'][\'hierarchical\'] = true;
  }
  return $args;
}
add_filter( \'register_taxonomy_args\', \'NAMESPACE_register_taxonomy_args\', 10, 2 );

结束

相关推荐