Làm cách nào để đổi tên bài viết mặc định


8

Tôi đang sử dụng Bài viết loại bài đăng để hiển thị các mục danh mục đầu tư và có vẻ lạ khi danh mục đầu tư được gắn nhãn là bài đăng. Có cách nào để đổi tên Bài viết thành Danh mục đầu tư thay vào đó để phản ánh tốt hơn cách sử dụng của nó.


Plugin này thay đổi các loại bài đăng: wordpress.org/extend/plugins/post-type-switcher Tôi nghĩ rằng plugin này hoạt động nhiều hơn trong wordpress.org/extend/plugins/convert-post-types
helgatheviking

Câu trả lời:


9

Nếu bạn muốn đơn giản đổi tên giao diện của bài đăng, thay vì tạo loại bài đăng tùy chỉnh thì hãy thêm mã này vào tệp tin.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;
}

Vì lợi ích của tính minh bạch, tôi đã nhận được mã này từ bài viết này , mặc dù tôi đã sử dụng các thủ thuật tương tự trong quá khứ.


2
Trong khi điều này là tốt khi hiển thị khái niệm kỹ thuật, thay thế một số từ trong tất cả các văn bản địa phương là quá rộng.
Hết

Điều này sẽ ảnh hưởng đến hiệu suất như thế nào? Có phải các bộ lọc trên chỉ được sử dụng trong phụ trợ?
mikkelbreum

Tôi nghĩ rằng đây không phải là một giải pháp tốt cho trường hợp cụ thể này. $ dịch có thể chứa một chuỗi như 'nhấp vào bài đăng' hoặc 'se om du har fået post' (Đan Mạch), trong trường hợp đó bạn sẽ KHÔNG muốn thay thế 'bài đăng' bằng 'tin tức'
mikkelenameum

9

Tôi đã sử dụng tập lệnh sau để đổi tên loại bài đăng mặc định:

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' );

7

Bạn cần tạo Loại bài đăng tùy chỉnh, "Danh mục đầu tư".

Bài viết là Bài viết. Tại sao cố gắng sử dụng chúng như một cái gì đó mà chúng không phải, và sau đó thử thay đổi danh pháp của chúng, thay vì viết một hoặc hai hàm đơn giản functions.php, điều đó sẽ dẫn đến cả chức năng chính xác và danh pháp chính xác mà bạn muốn?


Bởi vì tôi đã không sử dụng các loại bài đăng tùy chỉnh cho đến ngày hôm nay và trang web tôi thiết lập sử dụng tính năng blog để chạy một danh mục đầu tư vì khách hàng không muốn có một blog - vì vậy tôi nghĩ tại sao không sử dụng blog được thiết lập để chạy một danh mục đầu tư thay thế - tiết kiệm phát minh lại bánh xe để nói. Có vẻ dễ dàng thay đổi tên manu hơn là làm lại toàn bộ trang web vì tất cả nội dung đã được thêm vào.
Evie Milo

Nó sẽ chỉ cần một truy vấn SQL để thay đổi post_type cho tất cả các Bài đăng bị ảnh hưởng, khi bạn đã tạo Loại bài đăng tùy chỉnh của mình ...
Chip Bennett

1
Chip chắc chắn đúng ở đây. Đây là những gì tôi sẽ làm và những gì nên được thực hiện trong trường hợp như IMHO này.
Mfields

2
Sql bạn cần trông hơi giống thế này UPDATE wp_posts SET post_type = 'funny-bunny' WHERE post_type = 'post';Rất có thể bạn sẽ cần thay đổi tiền tố bảng (wp_) để phản ánh cài đặt đó trong cài đặt hiện tại của bạn.
Mfields

2
Tôi xin khác với Chip Bennett danh dự ... Bài viết ở đó để tổ chức các yếu tố theo thời gian. Tại sao phải đăng ký một post_type khác, thay đổi các truy vấn, nếu mọi thứ bạn cần đã có sẵn? Trong các trang web không phải tiếng Anh của tôi, tôi thường xuyên thay đổi các tệp ngôn ngữ WordPress để phù hợp với chức năng Bài viết và đổi tên thành Tin tức, Bài viết hoặc Danh mục đầu tư.
brasofilo

2
// 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;
}

Tôi đã nhận được mẹo này từ tạp chí đập vỡ và thử nghiệm nó và nó hoạt động rất tốt

http://www.smashingmagazine.com/2011/05/10/new-wordpress-power-tips-for-template-developers-and-consultants/

1

Tôi tìm thấy chủ đề này khi tôi đang tìm kiếm một giải pháp để thay đổi loại bài đăng từ tên này sang tên khác.

Thay vì thực hiện một truy vấn tùy chỉnh theo đề xuất của một người nào đó ở đây, tôi chỉ đơn giản làm điều này:

$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

Các cpt phải được tạo và tạo ..


1

Đổi tên bài viết thành danh mục đầu tư

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' );

Làm thế nào khác với câu trả lời khác của @elbatron?
kaiser

@kaiser - Câu trả lời này là đúng, là được đánh dấu là câu trả lời của OP là không chính xác (nhìn vào hành động - 'admin_menu' và 'init' là một cách sai lầm xung quanh Ngoài ra câu trả lời này cho người sử dụng. __()Chức năng.
David Gard

Tại sao echo '';?
Bill

0

Nếu bạn chỉ muốn thay đổi nhãn menu quản trị viên từ Bài đăng -> Danh mục đầu tư, thì hãy xem câu hỏi này:

Thay đổi nhãn Menu Admin

[Cập nhật]

Plugin Admin Menu Editor này có vẻ như sẽ cho phép bạn thay đổi nhãn menu dễ dàng hơn - mặc dù tôi chưa thử nghiệm nó.


cảm ơn tôi sẽ xem liệu tôi có thể tìm ra điều gì từ nó không, mặc dù nó có vẻ hơi phức tạp đối với tôi.
Evie Milo

1
Tôi đã thêm một liên kết đến một plugin sẽ giúp bạn
anu

cảm ơn vì liên kết, nhưng tôi muốn tìm hiểu thêm về tập tin tests.php và tránh sử dụng quá nhiều plugin. Tôi đã theo liên kết đầu tiên của bạn và cuối cùng nó đã dẫn tôi đến đây: new2wp.com/snippet/change-wordpress-posts-post-type-news và điều đó đã giúp tôi sắp xếp nó thực sự nhanh chóng - cảm ơn sự giúp đỡ của bạn!
Evie Milo

@Evie Milo - bạn nên đánh dấu câu trả lời là được chấp nhận.
kaiser

0

Bạn sẽ chỉ cần tạo một bài đăng tùy chỉnh khác có khả năng tương tự như một bài đăng thông thường. Sau đó, bạn có thể vô hiệu hóa menu Bài viết với điều này:

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');

đi xuống tuyến đường này sẽ tạo ra quá nhiều công việc bổ sung ở giai đoạn cuối của dự án - không phải là thứ ngân sách sẽ cho phép - tất cả nội dung hiện đã được thêm vào và tôi chỉ muốn xem liệu có cách nào để đổi tên bài đăng thành danh mục đầu tư không đã ít gây nhầm lẫn cho khách hàng.
Evie Milo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.