Hướng dẫn dùng wp-class.php trong PHP

Nội dung chính

  • Thêm file trong PHP trong file function.php
  • Thêm file bắt buộc trong PHP
  • Gọi file trong Templates WordPress
  • Thực hành
  • Kết luận
  • Thêm file trong PHP
  • Thêm file bắt buộc trong PHP
  • Điểm khác biệt [phần này lược dịch nên có thể không chính xác]
  • Gọi file trong WordPress
  • Luyện tập sử dụng
  • Truyền dữ liệu

Đã đăng vào thg 4 24, 2018 2:06 SA 3 phút đọc

Khi sử dụng WordPress. Chúng ta sẽ tạo ra các file templates để có thể sử dụng ở nhiều vị trí khác nhau cũng như dễ dàng chỉnh sửa. WordPress được base trên PHP nên các file code đều có đuôi file là PHP. Sau đây mình sẽ giới thiệu một số các gọi file php trong function cũng như trong file templates.

Thêm file trong PHP trong file function.php

Khi các bạn code 1 function cần tương tác với admin thì các file sẽ phải được include trong function.php

Sử dụng Hàm include[] sẽ gọi 1 file PHP. Nếu không tìm thấy, sẽ có lỗi PHP warning.

Sử dụng Hàm include_once[] cũng tương như include[], nhưng sẽ chỉ gọi file cần thêm vào 1 lần.

Thêm file bắt buộc trong PHP

Cũng tương tự như thêm file ở trên, nhưng quá trình hoạt động sẽ bị gián đoạn và hiển thị lỗi khác nhau.

require[] hoạt động tương tự include[], nhưng một khi file không tìm thấy, bạn sẽ thấy script break từ đó.

require_once[] cũng tương tự include_once[], tức là nếu đã call file đó một lần thì không thể call lần thứ 2.

Gọi file trong Templates WordPress

Trong WordPress, khi làm theme chúng ta nên tách biệt các phần có thể sử dụng lại nhiều lần như Loop Post, Element, Shortcode. Chúng ta sẽ tạo ra file templates riêng như logo.php hoặc latest-post.php khi sử dụng các file này ở teamplates. Chúng ta sẽ sử dụng hàm get_template_part[] là một phần API của WordPress, có thể sử dụng để gọi section/template hoặc một phần code vào trong theme.

Function này sẽ có 2 tham số truyền vào :

Đối đầu tiên là slug của template.

Đối thứ hai là tên của template.

Về cơ bản function này khá thú vị nếu các thành phần bạn cần gọi vào là độc lập, tức là các giá trị và define biến của chúng được gọi bên trong, hoặc gọi từ header.

Thực hành

Chúng ta hãy thử với những ví dụ đơn giản để dễ hiểu hơn.

  1. Ta có 1 template tên logo.php nằm trong thư mục /themes/dgt-gapfood/inc/templates

  2. Ta có 1 template header-right.php nằm trong thư mục /themes/dgt-gapfood/inc/header

Vậy ta sẽ sử dụng get_template_part[] để gọi file template logo.php như thế nào

Trong file header.php chúng ta muốn gọi logo ở vị trí bên trái. Chúng ta sẽ có đoạn code như sau:

Vậy với file template header-right.php thì chúng ta sẽ gọi như sau:

Như vậy các bạn sẽ thấy nếu như file template của các bạn chỉ có 1 đối số là logo chả hạn thì k cần truyền đối số thứ 2 vào. Nhưng nếu file template có 2 đối số ví dụ header-right.php thì header và right là 2 đối số.

Kết luận

Với việc sử dụng file ở trong function nếu bạn sử dụng get_template_part[] thì sẽ không có tác dụng. Vì vậy, hãy sử dụng require còn nếu sử dụng file templates trong teamplate của WordPress thì sử dụng get_template_part

Chúc các bạn thành công.

All rights reserved

Điểm bài viết

[Tổng cộng: 2 Trung bình: 3]

Có 4 cách để bạn gọi 1 file PHP, và trong WordPress, chúng ta sẽ cùng tìm hiểu các cách phù hợp với những hoàn cảnh nào nhé.

Thêm file trong PHP

Về cơ bản, đây là việc bạn gọi 1 đoạn mã khác vào trong file bạn đang làm việc.

Hàm include[] sẽ gọi 1 file PHP. Nếu không tìm thấy, sẽ có lỗi PHP warning.

Hàm include_once[] cũng tương, nhưng sẽ chỉ gọi file cần thêm vào 1 lần.

Thêm file bắt buộc trong PHP

Cũng tương tự như thêm file ở trên, nhưng quá trình hoạt động sẽ bị gián đoạn và hiển thị lỗi khác nhau.

require[] hoạt động tương tự include[], nhưng một khi file không tìm thấy, bạn sẽ thấy script break từ đó [và không chạy các thành phần tiếp theo].

require_once[] cũng tương tự include_once[], tức là nếu đã call file đó một lần thì không thể call lần thứ 2.

Điểm khác biệt [phần này lược dịch nên có thể không chính xác]

require_once[] tốt hơn cho các site lớn vì nó làm việc mà không ảnh hưởng quá nhiều tới bảo mật và hiệu năng.
include_once[] nhanh và dễ chấp nhận với các site nhỏ hơn.

Gọi file trong WordPress

Trong WordPress, ngoài những phương án mặc nhiên gọi file PHP như trên, ta còn có thể sử dụng các cách khác:

get_template_part[] là một phần API của WordPress, có thể sử dụng để gọi section/template hoặc một phần code vào trong theme.

Function này chấp nhận 2 đối:
– Đối đầu tiên là slug của template.
– Đối thứ hai là tên của template.

Về cơ bản function này khá thú vị nếu các thành phần bạn cần gọi vào là độc lập, tức là các giá trị và define biến của chúng được gọi bên trong, hoặc gọi từ header.

Luyện tập sử dụng

Ta hãy thử các phương án:

1. Ta có 1 template tên home.php nằm trong thư mục /templates/

2. Ta có 1 template social.php nằm trong thư mục /template-parts/footer/

Các cách gọi bằng get_template_part[] của bạn sẽ như thế nào?

load_template[] là function của WordPress, nhưng thực ra không khác gì bạn gọi require[]. Tuy nhiên, bạn đừng quên path của function này bao gồm cả file extension, tức là .php nhé.

Ví dụ:

locate_template[$template_names, $load];

locate_template[] là phương án không tệ, vì nó check file có tồn tại hay không trước khi bạn có thể [không bắt buộc] include file này.

Sử dụng:

locate_template[$template_names, $load];

$load có thể nhận giá trị true nếu bạn muốn include các file template đã check tồn tại.

Bạn thậm chí có thể check 3 templates cùng 1 lúc như thế này:

locate_template[array[
    'download.php',
    'custom-download.php',
    'mytheme-download.php'
], true];

get_query_template[] gọi main template [template nằm ngoài cùng] sẽ rất hiệu quả, chẳng hạn như các template sau:

– index
– 404
– archive
– author
– category
– tag
– taxonomy
– date
– home
– front_page
– page
– paged
– search
– single
– attachment
– comments_popup

Ví dụ:

include[get_query_template['404']];

Truyền dữ liệu

Giờ ta sẽ chuyển qua phần khó hơn. Giả sử bạn có 1 module tên là Newsletter, nó được đặt trong thư mục template-parts và có tên là newsletter.php.

Tuy nhiên, module này có giao diện chỉ khác nhau đôi chút và được sử dụng trên 3 mục khác nhau: trên page, trên single post và trên sidebar.

Chúng ta có 1 bài toán phức tạp hơn về reusable code. Làm thế nào 1 newsletter block có thể đáp ứng cả 3 vị trí trên hoàn hảo nhất?

Và phương án tốt nhất…

Thật ra tình huống này nên được xử lý như sau để code tốt nhất:

Trước khi bạn include template, bạn cần define biến cho mỗi trường hợp.

Chẳng hạn:

Trong file page.php

$newsletter_header = 'Sign Up For Bonus';

Trong file single.php

$newsletter_header = 'Have a discount?';

Trong file sidebar.php

$newsletter_header = 'Newsletter Signup';

Như bạn nhìn thấy, $newsletter_header trong các page khác nhau sẽ được định nghĩa khác nhau rồi đúng không. Vậy làm sao để biến này được truyền thành công vào file newsletter.php?

Nếu bạn sử dụng get_template_part[], biến sẽ không được truyền đâu. Vì vậy, hãy sử dụng require[TEMPLATEPATH . '/template-parts/newsletter.php'];. Few, có magic chưa nhỉ?

Thú vị phải không?

5 1 đánh giá

Đánh giá bài viết

Post Views: 1.000

Chủ Đề