我有一个使用自定义帖子类型“投资组合”的父 wordpress 主题,但我想将其更改为“属性”。我希望将所有上下文元素更改为显示“属性”,例如“显示属性”、“添加新属性”、“删除属性”等。我知道我可以通过更新父主题来做到这一点,但是如果可以避免的话,我宁愿不这样做。
不幸的是,我对 PHP 不够了解,无法编写自己的函数并更改它。有人可以帮我解决这个问题吗?我有点卡住了。
我觉得这对于 php 开发人员来说很简单。我只是不知道该怎么做。
我有一个使用自定义帖子类型“投资组合”的父 wordpress 主题,但我想将其更改为“属性”。我希望将所有上下文元素更改为显示“属性”,例如“显示属性”、“添加新属性”、“删除属性”等。我知道我可以通过更新父主题来做到这一点,但是如果可以避免的话,我宁愿不这样做。
不幸的是,我对 PHP 不够了解,无法编写自己的函数并更改它。有人可以帮我解决这个问题吗?我有点卡住了。
我觉得这对于 php 开发人员来说很简单。我只是不知道该怎么做。
要重命名帖子类型标签,我们需要操作全局$wp_post_types
. 请注意,帖子类型是portfolio
并且标签只是虚拟文本。
add_action( 'init', 'object_label_so_16097216', 0 );
function object_label_so_16097216()
{
global $wp_post_types;
$labels = &$wp_post_types['portfolio']->labels; // <-- adjust CPT
$labels->name = 'name'; // <-- adjust from here on
$labels->singular_name = 'singular_name';
$labels->add_new = 'add_new';
$labels->add_new_item = 'add_new';
$labels->edit_item = 'edit_item';
$labels->new_item = 'name';
$labels->view_item = 'view_item';
$labels->search_items = 'search_items';
$labels->not_found = 'not_found';
$labels->not_found_in_trash = 'not_found_in_trash';
}
之后,我们仍然需要更改菜单项标签。在这里,我使用了一个辅助函数来获取 CPT 菜单项的确切位置。标签又是虚拟文本。
add_action( 'admin_menu', 'menu_label_so_16097216' , 0 );
function menu_label_so_16097216()
{
global $menu, $submenu;
$cpt_link = 'edit.php?post_type=portfolio'; // <-- adjust CPT
$position = b5f_recursive_array_search( $cpt_link, $menu );
$menu[$position][0] = 'name'; // <-- adjust from here on
$submenu[$cpt_link][5][0] = 'name';
$submenu[$cpt_link][10][0] = 'add_new';
}
function b5f_recursive_array_search( $needle, $haystack )
{
foreach( $haystack as $key => $value )
{
$current_key = $key;
if(
$needle === $value
OR (
is_array( $value )
&& b5f_recursive_array_search( $needle, $value ) !== false
)
)
{
return $current_key;
}
}
return false;
}
只需将所有这些代码放在孩子的functions.php
中,调整 CPT 和标签,就可以了。
在回复 Jeremy Miller 的回答时,您不必循环通过管理菜单来更改标签。标签的完整列表实际上是:
'name'
'singular_name'
'menu_name'
'name_admin_bar'
'all_items'
'add_new'
'add_new_item'
'edit_item'
'new_item'
'view_item'
'search_items'
'not_found'
'not_found_in_trash'
'parent_item_colon'
看看https://codex.wordpress.org/Function_Reference/register_post_type#Arguments
由于您可以指定“menu_name”,因此在 Jeremy 指定的菜单项中添加额外的钩子和循环是没有用的。