Bản địa hóa wordpress _e()

Chào mừng đến với phần cuối cùng của loạt bài này. Nếu bạn mới đến, nhớ kiểm tra hai bài viết trước. Đến đây chúng tôi đã liệt kê các chủ đề sau

Các cách làm tốt nhất trong quá trình phát triển WordPress, phần đầu

  • Các tiêu chuẩn viết mã trong WordPress
  • Line lines not void time [prefixed and use layer]
  • Trích dẫn mã
  • bảo mật

Các cách làm tốt nhất trong quá trình phát triển WordPress, phần hai

  • Add scripts and style true [register, enqueue and localize]
  • Ajax function call
  • Các bộ lọc và hành động

Trong bài viết cuối cùng này, tôi sẽ nói về điều quan trọng thứ ba là cho dù chúng không ảnh hưởng đến hoạt động của plugin, nhưng chúng là cần thiết nếu bạn muốn phân phối một plugin có chất lượng

1. Gỡ lỗi

Điều đầu tiên bạn nên làm khi viết một plugin là kích hoạt chế độ gỡ lỗi theo lời khuyên của WordPress. Bằng cách đó, bạn sẽ thấy tất cả các lỗi, cảnh báo và các vấn đề phát sinh

Để kích hoạt chế độ gỡ lỗi đơn giản là đặt cái này vào trong tệp

// all errors will be saved to a debug.log log file inside the /wp-content/ directory
define['WP_DEBUG_LOG', true];

// not display errors in HTML
define['WP_DEBUG_DISPLAY', false];
1 của bạn

define['WP_DEBUG', true];

Một khi bạn tải lại trang web, bạn sẽ thấy tất cả các cảnh báo và lỗi phát sinh tương tự với các thông báo khác giống như các hàm bị phản đối trong WordPress. Nếu bạn muốn phân phối một sản phẩm có chất lượng, hãy chắc chắn rằng việc sử dụng plugin của bạn với chế độ gỡ lỗi được kích hoạt hoặc tắt đi để kết quả tương tự [không lỗi, không cảnh báo]

Nếu bạn muốn lưu lỗi vào một tập tin không hiển thị chúng trong HTML, bạn có thể làm điều đó bằng cách thêm các dòng sau cùng với

// all errors will be saved to a debug.log log file inside the /wp-content/ directory
define['WP_DEBUG_LOG', true];

// not display errors in HTML
define['WP_DEBUG_DISPLAY', false];
2

// all errors will be saved to a debug.log log file inside the /wp-content/ directory
define['WP_DEBUG_LOG', true];

// not display errors in HTML
define['WP_DEBUG_DISPLAY', false];

Một thiết lập gỡ lỗi khác mà tôi sử dụng nhiều là lưu tất cả các truy vấn dữ liệu trong một mảng như sau

define['SAVEQUERIES', true];

Tôi thường sử dụng tất cả những điều này [đặc biệt là cái cuối cùng] với plugin Debug Bar và bảng điều khiển Debug Bar. Nếu bạn không biết chúng, hãy cài đặt và bắt đầu gỡ lỗi các plugin và chủ đề của bạn. Bạn sẽ thấy làm điều đó dễ dàng như thế nào

Bạn cũng có thể kiểm tra danh sách các plugin mà tôi sử dụng để phát triển trong Wp Favs

2. Tài liệu hướng dẫn

Viết tài liệu hướng dẫn mọi khía cạnh của plugin hoặc chủ đề của bạn sẽ làm cho người dùng và cuộc sống của bạn trở nên dễ dàng hơn. Họ sẽ có thể làm cho plugin hoặc chủ đề hoạt động bằng cách theo dõi các hướng dẫn và video hoặc sự kết hợp cả hai và bạn sẽ tiết kiệm thời gian rất nhiều vì vậy với công việc được hỗ trợ và gửi email

Tôi khuyên bạn nên chia sẻ tất cả tài liệu hướng dẫn theo mục hoặc phần theo thứ tự cái nào là quan trọng nhất

  • Cài đặt
  • Configure
  • Sử dụng nhanh
  • Các vấn đề thông thường
  • Các yêu cầu

thuộc về chủ đề hoặc plugin mà bạn có thể thêm các phần hoặc mục còn lại. Nếu bạn kiểm tra trang tài liệu hướng dẫn của Lời mời xã hội WordPress, bạn sẽ thấy những điều tôi muốn nói

Nếu bạn thêm các bộ lọc và hook như tôi đã đề cập trong bài trước thì một ý tưởng hay là tạo một bộ lọc/hành động tham chiếu đến trang giải thích những gì họ làm.  

Tab help

Trợ giúp tab là một cách khác để cung cấp sự trợ giúp rừng cho người dùng của bạn trực tiếp ngay trong plugin thay vì điều hướng họ đến trang web của bạn. Chúng thường được sử dụng để cung cấp thông tin về màn hình đang được sử dụng tại thời điểm hiện tại

Ví dụ, trên một plugin của tôi được gọi là Social PopUP, tôi sử dụng một tab hỗ trợ để giải thích các mã ngắn hiện có

Nếu bạn đang sử dụng một lớp trong plugin của bạn và bạn muốn thêm tab hỗ trợ vào loại bài đăng tùy chỉnh thì bạn có thể làm như thế này

/**
 * Initialize the plugin by loading admin scripts & styles and adding a
 * settings page and menu.
 *
 * @since     1.0.0
 */
function __construct[]{
    [...]
    //Help Tab
    add_action[ 'load-post.php',  array[ $this, 'my_admin_add_help_tab'] ];
}   

/**
 * Add help tab to the spucpt post type
 * @since  1.0
 * @return void
 */
function my_admin_add_help_tab [] {

    $screen = get_current_screen[];

    if[ 'spucpt' != $screen->id ] {
  	return;
	}

    // Add my_help_tab if post type is spucpt
    $screen->add_help_tab[ array[
        'id'	    => 'my_help_tab',
        'title'	    => __[ 'Shortcodes' ],
        'content'	=> 'Hello content goes here',
    ] ];
}    

Điều rất quan trọng là bạn kiểm tra xem ID của màn hình hiện có trùng với loại bài đăng tùy chỉnh của bạn không nếu tab không hỗ trợ sẽ xuất hiện ở mọi nơi,

Thay vì thêm một trang tùy chỉnh, bạn có thể sử dụng mã được sử dụng như một ví dụ trong Codex

Theo quan điểm các nhân của tôi, các tab trợ giúp không hiện hữu đối với người dùng và hầu hết họ không biết sự tồn tại của họ, nhưng đó là một cách làm tốt để thêm một số dòng trợ giúp bên trong plugin chính

3.  Quốc tế hóa

Quốc tế hóa được gọi là i18n [có 18 ký tự giữa chữ i và chữ n] nó là bã đậu ở trên cái bánh của một plugin hay chủ đề. Như bạn biết WordPress nó được sử dụng bởi nhiều người trên thế giới, vì vậy tại thời điểm phân phối một plugin hay chủ đề, chúng tôi cần đảm bảo rằng chúng có thể dễ dàng được dịch sang ngôn ngữ của họ

Sự khác nhau giữa Quốc tế hóa và Bản địa hóa là gì?

Đầu tiên, chúng ta nên học nghĩa của hai từ này đồng thời biết i18n và i10n. Quốc tế hóa chỉ về quá trình tạo một plugin hoặc chủ đề có thể được dịch sang các ngôn ngữ khác trong khi bản địa hóa về cơ bản là hành động của công việc đó

WordPress xử lý công việc dịch thuật như thế nào?

WordPress sử dụng thư viện gettext nổi tiếng được giải thích trong một vài từ, chúng ta có thể nói rằng các công việc như thế này

  • Các nhà phát triển nhóm các chuỗi có thể dịch được trong các hàm gettext đặc biệt
  • Các công cụ phân tích mã nguồn tệp và trích xuất các chuỗi có thể dịch thành tệp POT [Mẫu đối tượng di động]
  • Người biên dịch các tập tin POT và kết quả là một tập tin PO [tập tin POT nhưng với các bản dịch bên trong]
  • Các tập tin PO được biên dịch thành các tập tin MO, cho phép truy xuất nhanh hơn các chuỗi lúc chạy

Làm thế nào để tạo các chuỗi có thể dịch được?

Điều đầu tiên bạn cần làm là quyết định một miền văn bản sẽ được sử dụng để nhóm tất cả các bản dịch của plugin hoặc chủ đề. Tên miền văn bản phải trùng với plugin tên đại diện của bạn

Có nhiều cách để tạo các chuỗi có thể tùy thuộc vào việc bạn đang tạo các biến, xuất ra thứ gì đó, v.v. Các hàm phổ biến nhất là __[] và _e[]. Vui lòng xem một số ví dụ bên dưới

// creating a variable
$hello =  __[ 'Hello, Im a translatable string', 'my-text-domain' ];

echo '

'. __[ 'Hello, Im a translatable string', 'my-text-domain' ] . '

'; // to do an echo you can use _e[ 'Hello, Im a translatable string', 'my-text-domain' ]; // When you have variables in the string you do: printf[ __[ 'We deleted %d posts.', 'my-text-domain' ], $count ]; // Or multiple variables printf[ __[ 'Your name is %1$s, and your last name is %2$s.', 'my-text-domain' ], $name, $lastname ];

Một hàm tuyệt vời khác mà bạn có thể sử dụng là _n[] được sử dụng cho nhiều. Các hàm nhận 4 tham số

  • số ít — số lượng ít của chuỗi
  • number many — format number of many of string
  • đếm — số lượng đối tượng, sẽ xác định khi nào số lượng ít hoặc số lượng nhiều nên được trả lại
  • text domain — text-domain of plugin

Trở lại với ví dụ trước của chúng tôi, với số nhiều sẽ trông giống như thế này

________số 8

Nếu bạn cần dịch các chuỗi trong JavaScript của mình, bạn có thể truyền tất cả các chuỗi bằng cách sử dụng hàm

// all errors will be saved to a debug.log log file inside the /wp-content/ directory
define['WP_DEBUG_LOG', true];

// not display errors in HTML
define['WP_DEBUG_DISPLAY', false];
3 mà chúng ta đã đặt chủ đề cập nhật trong bài viết thứ hai của loạt bài này

define['WP_DEBUG', true];
0

Cho phép dịch trong Plugin của chúng tôi

Chúng ta đã bổ sung tất cả các chuỗi có thể dịch trong plugin của chúng ta và bây giờ là lúc kích hoạt nó. To doing that you only need

define['WP_DEBUG', true];
1

Đoạn mã mẫu này sẽ cố gắng tải từ thư mục gốc của một tệp MO gọi là ____04

// all errors will be saved to a debug.log log file inside the /wp-content/ directory
define['WP_DEBUG_LOG', true];

// not display errors in HTML
define['WP_DEBUG_DISPLAY', false];
5
// all errors will be saved to a debug.log log file inside the /wp-content/ directory
define['WP_DEBUG_LOG', true];

// not display errors in HTML
define['WP_DEBUG_DISPLAY', false];
6. Thuộc tính ngôn ngữ được thiết lập trong wp-config. php then {locale} section will be instead by your language code. Ví dụ cấu hình
// all errors will be saved to a debug.log log file inside the /wp-content/ directory
define['WP_DEBUG_LOG', true];

// not display errors in HTML
define['WP_DEBUG_DISPLAY', false];
1 của tôi là

define['WP_DEBUG', true];
6

File will be loading is ____08. Đối với chủ đề cũng khá giống, bạn chỉ cần thêm vào tệp

// all errors will be saved to a debug.log log file inside the /wp-content/ directory
define['WP_DEBUG_LOG', true];

// not display errors in HTML
define['WP_DEBUG_DISPLAY', false];
9 như dưới đây

// all errors will be saved to a debug.log log file inside the /wp-content/ directory
define['WP_DEBUG_LOG', true];

// not display errors in HTML
define['WP_DEBUG_DISPLAY', false];
0

Sự khác nhau chính là hàm này sẽ tìm thấy tập tin 

define['SAVEQUERIES', true];
0 thay vì 
define['SAVEQUERIES', true];
1 như chúng ta đã thấy ở ví dụ trước

Bạn có thể đọc thêm về i18n trong WordPress Codex

Kết luận

Chúng ta đang ở phần cuối cùng của loạt bài này và tôi hy vọng bạn thích thú vì nó giống như tôi thích thú khi viết nó vậy. Như tôi đã nói ở trên, tôi đã viết loạt bài suy nghĩ này về thời điểm tôi bắt đầu là một nhà phát triển. Tôi cố gắng tập hợp tất cả các thông tin mà tôi cho là quan trọng để tạo ra một plugin tốt, tổng hợp chúng trong một tập tin lớn về tất cả những gì được giải thích trong Codex. Cho dù tôi đã loại bỏ rất nhiều, nhưng tôi nghĩ nó đủ để có một nền tảng chắc chắn

Tôi muốn thấy bạn chia sẻ cảm nghĩ, thủ thuật và ý tưởng của bạn cho việc phát triển WordPress trong phần bình luận ở bên dưới

Chủ Đề