15 hàm WordPress hữu ích mà tất cả các dev nên biết

Chia sẻ Wordpress 34
15 hàm WordPress hữu ích mà tất cả các dev nên biết

WordPress có đầy đủ các hàm tuyệt vời cho các bạn sử dụng. Chúng ta có thể lấy ra danh sách bài đăng, thao túng hầu hết mọi thứ về chúng, lấy bất kỳ người dùng nào chúng ta muốn và hiển thị các kết nối phương tiện truyền thông xã hội của họ trong nháy mắt.

Tuy nhiên, có khá nhiều hàm dường như bị bỏ qua mà không rõ nguyên nhân. Chúng ta hãy xem một số hàm bị bỏ qua và tìm hiểu cách sử dụng chúng.

antispambot ()

Nó dường như là một trong những hàm được giấu kỹ nhất trong codebase. antispambot()thay thế các ký tự bằng các thực thể HTML. Ví dụ một cách để che giấu các địa chỉ email từ những kẻ phá hoại xấu xa:

$email = 'mymail@mail.com';
echo 'You can contact me at ' . antispambot( $email ) . ' any time'.

Mặc dù đây là một mẩu tin hữu ích, nó cũng là một ví dụ về lý do tại sao một số người chỉ trích WordPress – đây là một chức năng được đặt tên khủng khiếp. Từ việc đọc tên hàm, bạn không biết nó làm gì.

human_time_diff ()

Hàm này – tạo ra sự khác biệt giữa hai dấu thời gian – đã có trong phiên bản 1.5 (đó là ngày 17 tháng 2 năm 2018!).

Đoạn trích tuyệt vời sau đây mình đã mượn từ codex cho thấy cách đây một bài đăng hiện tại được xuất bản cách đây bao lâu. Nó sử dụng ngày xuất bản của bài đăng làm đối số đầu tiên và ngày hiện tại làm ngày thứ hai .

echo 'This post was published ' . human_time_diff( get_the_time( 'U' ), current_time( 'timestamp' ) ) . ' ago';

get_post_meta ()

Mình biết đây là một hàm được sử dụng tốt, tuy nhiên, làm thế nào nó hoạt động không phải là kiến ​​thức quá phổ biến. Trước hết, bằng cách bỏ qua các tham số thứ hai và thứ ba, bạn có thể lấy tất cả Metadata cho một bài viết .

$all_meta = get_post_meta( 14 );

Ngay cả khi bạn chỉ lấy dữ liệu cho một key duy nhất, tất cả postmeta vẫn được lấy.

Lý do thực sự khá logic. Metadata được sử dụng ở nhiều nơi. Nếu get_post_meta() truy vấn cơ sở dữ liệu mỗi lần nó được sử dụng, chúng ta sẽ kết thúc với quá nhiều truy vấn. Thay vào đó, nếu bạn lấy metadata, nó sẽ lưu trữ tất cả và sử dụng các giá trị được lưu trong bộ nhớ cache trên tất cả các lần truy xuất metadata tiếp theo.

wp_upload_bits ()

Hàm này là một hàm tải lên tập tin thẳng . Mặc dù nó không di chuyển tệp vào thư mục tải lên và thêm nó vào phần thư viện WordPress, nhưng nó cực kỳ thuận tiện và bạn luôn có thể thực hiện phần còn lại với chức năng wp_insert_attachment().

$upload = wp_upload_bits( $file['name'], null, file_get_contents( $file['tmp_name'] ) );

Giải thích: tham số đầu tiên là tên tệp. Thứ hai là khấu hao vì vậy nó nên được đặt thành null (eyeroll tại tính nhất quán của WordPress). Tham số thứ ba là nội dung thực tế của tập tin.

get_post_field ()

Trước đây mình đã viết một vòng lặp để có được số lượng bình luận cho một bài đăng hoặc viết một truy vấn cơ sở dữ liệu chuyên dụng cho nó. Tuy nhiên, bạn không cần chúng, những gì bạn cần là get_post_field(). Hàm này lấy giá trị của một trường cho một bài đăng trong cơ sở dữ liệu. Hãy cùng thử lấy một số bình luận nào!

This post has <?php echo get_post_field( 'comment_count', 4124 ) ?> comments.

wpautop ()

Hàm này đã được đưa ra tiêu điểm một chút, nhưng nó vẫn chưa được biết đến. Nó tương tự như bản địa PHP nl2br nhưng thay vì tạo các dòng mới, nó bao bọc nội dung của bạn trong các đoạn văn.

Điều này rất hữu ích nếu bạn có một textbox và bạn muốn đảm bảo rằng khi người dùng tạo các đoạn văn có ngắt dòng đôi, chúng vẫn hiển thị ở front-end.

wp_is_mobile ()

Hàm được đặt tên khéo léo này phát hiện khi người dùng ở trên thiết bị di động và cho phép bạn hiển thị nội dung tương ứng. Vì đây là tag có điều kiện nên nó trả về true hoặc false tùy theo kịch bản.

<?php if( wp_is_mobile() ) : ?>
Visit our website on your desktop for a richer user experience
<?php endif ?>

wp_redirect ()

Ví dụ cuối cùng cho thấy một hàm gọn gàng khác: wp_redirect(). Nó nên được sử dụng thay cho hàm header() nguyên gốc của PHP. Chức năng chuyển hướng WordPress cho phép bạn đặt URL để chuyển hướng đến và cũng đặt mã trạng thái, rất tốt để xử lý các chuyển hướng vĩnh viễn.

// For a URL which is no longer in use
wp_redirect( 'http://website.com/new-url/', 301 );

paginating_links ()

Mình cá rằng hàm này có phần tối nghĩa của nó, một phần do sự phổ biến của plugin WP-PageNavi. Theo mặc định, WordPress hiển thị các liên kết previous/next ở cuối danh sách bài viết của bạn. WP-PageNavi thay thế bằng số trang.

Điều này thực sự có thể được thực hiện với một công việc nhỏ bằng cách sử dụng các hàm paginate_links(). Nó có khá nhiều tham số nên mình khuyên bạn nên xem qua tài liệu.

Ví dụ sau từ codex cho thấy cách bạn có thể thêm nó vào một vòng lặp mặc định nhưng việc thêm nó vào các vòng lặp tùy chỉnh không phải là quá nhiều.

global $wp_query;
$big = 999999999; // need an unlikely integer
echo paginate_links( array(
    'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
    'format' => '?paged=%#%',
    'current' => max( 1, get_query_var('paged') ),
    'total' => $wp_query->max_num_pages
) );

wp_die ()

Hàm này bổ sung cho  hàm die() PHP . Sự khác biệt là chức năng này sẽ hiển thị HTML theo kiểu WordPress thay vì chỉ là một văn bản thuần túy. Bạn có thể sử dụng chức năng này để dừng chạy PHP. Bạn có thể thêm thông báo, tiêu đề và các đối số bổ sung sẽ được hiển thị, ví dụ:

wp_die( "Oops, you don't have access to the", "Permission Denied" );

has_block ()

Trong phiên bản 5.0, WordPress đã giới thiệu một trình chỉnh sửa dựa trên khối, có tên là Gutenberg. Hàm này sẽ xác định xem nội dung có chứa Gutenberg hay không, hoàn toàn giống với  hàm has_shortcode(). Nó sẽ trả về true nếu nội dung chứa một khối, hoặc false nếu không.

<?php
if ( has_block() ) {
    // Content has a block.
} ?>

wp_set_script_translations ()

Vì nhiều phần của giao diện người dùng WordPress sẽ chuyển sang JavaScript, nên nó cần một cách thuận tiện để đăng ký các văn bản có thể dịch trong JavaScript mà WordPress có thể phân tích và hiểu. Sử dụng chức năng này để đặt chuỗi dịch cho scripts của bạn. Dưới đây là một ví dụ:

wp_enqueue_script( 'my-script', plugins_url( 'js/my-script.js', __FILE__ ) );
wp_set_script_translations( 'my-script', 'mu-text-domain' );

register_block_type ()

Một chức năng nổi bật khác trong WordPress 5.0. Chức năng này cho phép bạn đăng ký một khối mới trong trình chỉnh sửa WordPress mới. Khối của bạn sẽ xuất hiện trong trình chỉnh sửa mới và chèn nó.

register_block_type( 'my-plugin/new-block', array(
    'title' => 'New Block',
    'icon' => 'megaphone',
    'category' => 'widgets',
    'render_callback' => 'render_function_callback',
) );

rest_do_Vquest ()

Chức năng này cho phép bạn thực hiện cuộc gọi đến các điểm cuối của WordPress REST API thông qua PHP. Khá hữu ích khi bạn cần truy xuất một đầu ra từ REST API để xử lý rằng bạn sẽ xử lý thêm bên trong PHP thay vì ở phía trình duyệt (giao diện người dùng).

$request = new WP_REST_Request( 'GET', "/wp/v2/posts" );
$request->set_header( 'X-WP-Nonce', wp_create_nonce( 'wp_rest' ) );
$response = rest_do_request( $request );
$data = 200 === $response->get_status() ? $response->get_data() : [];

rest_preload_api_Vquest ()

Khi xây dựng giao diện người dùng nặng JavaScript trong WordPress thường cần một bộ dữ liệu ban đầu được tải sẵn trong trang. Đây là chức năng sẽ cho phép bạn làm như vậy. Hàm này có nghĩa là được sử dụng cùng với array_reduce, ví dụ.

// Preload common data.
$preload_paths = array(
    '/',
    '/wp/v2/types?context=edit',
    '/wp/v2/taxonomies?per_page=-1&context=edit',
    '/wp/v2/themes?status=active',
);
preload_data = array_reduce(
  $preload_paths,
  'rest_preload_api_request',
  array()
);
wp_add_inline_script(
  'wp-api-fetch',
  sprintf( 'wp.apiFetch.use( wp.apiFetch.createPreloadingMiddleware( %s ) );', wp_json_encode( $preload_data ) ),
  'after'
);

Kết luận

Đây chỉ là một số chức năng dường như ít được biết đến. Mình phát hiện ra một hàm tuyệt vời mới khoảng hai tháng một lần và mình chắc chắn rằng các bạn có thể làm mình ngạc nhiên hơn nữa.

Nếu bạn có một hàm tối nghĩa hoặc một hàm sẽ hữu ích nhưng không khả dụng, hãy cho mình biết trong các nhận xét! Xin cảm ơn.

15 hàm WordPress hữu ích mà tất cả các dev nên biết
Đánh giá bài viết

tienphamblog

Leave a Reply

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

All rights reserved Tien Pham Blog