Я использую сообщения типа постов для отображения элементов портфолио, и выглядит странно, что портфель помечается как сообщения. Есть ли способ переименовать сообщения в портфолио, чтобы лучше отражать его использование.
Я использую сообщения типа постов для отображения элементов портфолио, и выглядит странно, что портфель помечается как сообщения. Есть ли способ переименовать сообщения в портфолио, чтобы лучше отражать его использование.
Ответы:
Если вы хотите просто переименовать внешний вид сообщений, а не создавать пользовательский тип сообщений, добавьте этот код в файл functions.php тем.
// hook the translation filters
add_filter( 'gettext', 'change_post_to_portfolio' );
add_filter( 'ngettext', 'change_post_to_portfolio' );
function change_post_to_portfolio( $translated ) {
$translated = str_ireplace( 'Post', 'Portfolio', $translated ); // ireplace is PHP5 only
return $translated;
}
В интересах прозрачности я получил этот код из этой статьи , хотя я использовал подобные приемы в прошлом.
Я использовал следующий скрипт, чтобы переименовать тип сообщения по умолчанию:
function change_post_menu_label() {
global $menu, $submenu;
$menu[5][0] = 'Portfolio';
$submenu['edit.php'][5][0] = 'Portfolio';
$submenu['edit.php'][10][0] = 'New Portfolio';
$submenu['edit.php'][16][0] = 'Portfolio Tags';
echo '';
}
add_action( 'admin_menu', 'change_post_menu_label' );
function change_post_object_label() {
global $wp_post_types;
$labels = &$wp_post_types['post']->labels;
$labels->name = 'Portfolio';
$labels->singular_name = 'Portfolio';
$labels->add_new = 'New Portfolio';
$labels->add_new_item = 'New Portfolio';
$labels->edit_item = 'Edit Portfolio';
$labels->new_item = 'New Portfolio';
$labels->view_item = 'View Portfolio';
$labels->search_items = 'Search Portfolio';
$labels->not_found = 'Not found';
$labels->not_found_in_trash = 'Not found in trash';
}
add_action( 'init', 'change_post_object_label' );
Вам необходимо создать пользовательский тип сообщения «Портфолио».
Посты - это посты. Зачем пытаться использовать их как то, чем они не являются, а затем пытаться изменить их номенклатуру, вместо того, чтобы писать одну или две простые функции functions.php, которые приведут к получению как точной функциональности, так и точной номенклатуры, которую вы хотите?
UPDATE wp_posts SET post_type = 'funny-bunny' WHERE post_type = 'post';Скорее всего, вам потребуется изменить префикс таблицы (wp_), чтобы отразить этот параметр в вашей текущей установке.
// hook the translation filters
add_filter( 'gettext', 'change_post_to_article' );
add_filter( 'ngettext', 'change_post_to_article' );
function change_post_to_article( $translated ) {
$translated = str_ireplace( 'Post', 'Article', $translated ); // ireplace is PHP5 only
return $translated;
}
Я получил этот совет из журнала Smashing и проверил его, и он прекрасно работает
http://www.smashingmagazine.com/2011/05/10/new-wordpress-power-tips-for-template-developers-and-consultants/
Я нашел эту тему, когда искал решение изменить тип сообщения с одного имени на другое.
Вместо того, чтобы делать пользовательский запрос, предложенный кем-то здесь, я просто сделал это:
$post = get_post( $id ); // The current post id
$post->post_type = 'receipt'; // The new post type name
wp_update_post( $post ); // Updating the new information
CPT должны быть уже созданы и отформатированы.
Переименовать сообщения в портфолио
function litho_posts_portfolio() {
global $menu;
global $submenu;
$menu[5][0] = __("Portfolio", 'litho');
$submenu['edit.php'][5][0] = __("Portfolio", 'litho');
$submenu['edit.php'][10][0] = __("New Item", 'litho');
echo '';
}
function litho_posts_portfolio_label() {
global $wp_post_types;
$labels = &$wp_post_types['post']->labels;
$labels->name = __("Portfolio", 'litho');
$labels->singular_name = __("Item", 'litho');
$labels->add_new = __("New Item", 'litho');
$labels->add_new_item = __("New Item", 'litho');
$labels->edit_item = __("Edit Item", 'litho');
$labels->new_item = __("Item", 'litho');
$labels->view_item = __("View Item", 'litho');
$labels->search_items = __("Search Portfolio", 'litho');
$labels->not_found = __("No Item Found", 'litho');
$labels->not_found_in_trash = __("No Item found in Trash", 'litho');
}
add_action( 'init', 'litho_posts_portfolio_label' );
add_action( 'admin_menu', 'litho_posts_portfolio' );
__()функцию пользователя .
echo '';?
Если вы просто хотите изменить метку меню администратора с Post -> Portfolio, посмотрите на этот вопрос:
Изменение меток меню администратора
[Обновить]
Этот плагин Admin Menu Editor выглядит так, как будто он позволит вам легче менять метки меню - хотя я не проверял его.
Вам просто нужно создать еще один пользовательский пост с теми же возможностями, что и обычный пост. Затем вы можете отключить меню сообщений следующим образом:
function remove_menus()
{
global $menu;
$restricted = array( __('Posts'));
end ($menu);
while (prev($menu))
{
$value = explode(' ',$menu[key($menu)][0]);
if(in_array($value[0] != NULL?$value[0]:"" , $restricted))
{
unset($menu[key($menu)]);
}
}
}
add_action('admin_menu', 'remove_menus');
Get_post_type_object будет делать свою работу.
add_action( 'init', 'ns_change_post_object' );
// Change dashboard Posts to News
function ns_change_post_object() {
$get_post_type = get_post_type_object('post');
$labels = $get_post_type->labels;
$labels->name = 'News';
$labels->singular_name = 'News';
$labels->add_new = 'Add News';
$labels->add_new_item = 'Add News';
$labels->edit_item = 'Edit News';
$labels->new_item = 'News';
$labels->view_item = 'View News';
$labels->search_items = 'Search News';
$labels->not_found = 'No News found';
$labels->not_found_in_trash = 'No News found in Trash';
$labels->all_items = 'All News';
$labels->menu_name = 'News';
$labels->name_admin_bar = 'News';
}