Hướng dẫn wordpress themes php - chủ đề wordpress php

Mở đầu

Bài viết này mình xin được hướng dẫn các bạn các bước cơ bản để tạo nên một theme WordPress của riêng mình .

Hướng dẫn wordpress themes php - chủ đề wordpress php
.

Tạo một WordPress Theme "zin"

1. WordPress Theme Structure

Về cơ bản, bất cứ WordPress theme nào cũng cần có 5 file chính:



...
2



...
3



...
4



...
5



...
6

2. style.css & screenshot.png

Trong file



...
2, ngoài việc căn chỉnh thuộc tính cho các thẻ HTML, chúng ta có thể khai báo các mô tả cho theme.

Ví dụ, ở đầu file



...
2:

/*   
Theme Name: Vuzic
Theme URI: http://www.vuzic.com
Description: I built this theme based on Nick Vuzic spirit.
Author: Hoang Viet An
Author URI: https://hoangvietan96.github.io
Version: 1.0
*/

Ngoài những mô tả chính như ở trên cho theme, chúng ta có thể thêm các options khác để mô tả theme chi tiết hơn:

Ví dụ:

/*
Theme Name: 
Theme URI: 
Author: 
Author URI: 
Description: 
Version: 
License: 
License URI: 
Tags: 
Text Domain: 
...
*/

Ngoài ra, WordPress cho phép người dùng đặt ảnh đại diện cho theme thông qua file



...
9.

Kết quả:

Hướng dẫn wordpress themes php - chủ đề wordpress php

3. header.php

Trước khi viết phần header cho theme, chúng ta cần tìm hiểu qua một số các template tags (hiểu là các functions được WordPress hỗ trợ cho đơn giản ):

Hướng dẫn wordpress themes php - chủ đề wordpress php
):

  • bloginfo('charset')` => UTF-8
    bloginfo('stylesheet_url') => http://localhost/test/wp-content/themes/theme_name/style.css
    
    0: In ra thuộc tính ngôn ngữ cho thẻ
    bloginfo('charset')` => UTF-8
    bloginfo('stylesheet_url') => http://localhost/test/wp-content/themes/theme_name/style.css
    
    1> của website sau khi được thiết lập trong General Settings:

Hướng dẫn wordpress themes php - chủ đề wordpress php
Output sẽ là:



...
  • bloginfo('charset')` => UTF-8
    bloginfo('stylesheet_url') => http://localhost/test/wp-content/themes/theme_name/style.css
    
    2: Trả về những thông tin cơ bản của website. Ví dụ:
bloginfo('charset')` => UTF-8
bloginfo('stylesheet_url') => http://localhost/test/wp-content/themes/theme_name/style.css

Chúng ta có thể tham khảo thêm các thuộc tính của

bloginfo('charset')` => UTF-8
bloginfo('stylesheet_url') => http://localhost/test/wp-content/themes/theme_name/style.css
2 tại đây.

  • bloginfo('charset')` => UTF-8
    bloginfo('stylesheet_url') => http://localhost/test/wp-content/themes/theme_name/style.css
    
    4: Template tag này sẽ thêm các class cho thẻ
    bloginfo('charset')` => UTF-8
    bloginfo('stylesheet_url') => http://localhost/test/wp-content/themes/theme_name/style.css
    
    5> tuỳ thuộc vào trang hiện tại được truy cập.

Ví dụ, khi ở một page:


Về cơ bản, một header của theme nên có những thành phần sau:


>

    
    Vuzic Title
    
    
    

>
...

Chú ý: Trước khi đóng thẻ

bloginfo('charset')` => UTF-8
bloginfo('stylesheet_url') => http://localhost/test/wp-content/themes/theme_name/style.css
6, chúng ta cần thêm template tag
bloginfo('charset')` => UTF-8
bloginfo('stylesheet_url') => http://localhost/test/wp-content/themes/theme_name/style.css
7 để WordPress hiểu được chúng ta đang set phần header cho theme.
Trước khi đóng thẻ
bloginfo('charset')` => UTF-8
bloginfo('stylesheet_url') => http://localhost/test/wp-content/themes/theme_name/style.css
6, chúng ta cần thêm template tag
bloginfo('charset')` => UTF-8
bloginfo('stylesheet_url') => http://localhost/test/wp-content/themes/theme_name/style.css
7 để WordPress hiểu được chúng ta đang set phần header cho theme.

Tương tự như



...
4:

    ...
    



Chú ý: Trước khi đóng thẻ

bloginfo('charset')` => UTF-8
bloginfo('stylesheet_url') => http://localhost/test/wp-content/themes/theme_name/style.css
9, chúng ta cần thêm template tag

0 để WordPress hiểu được chúng ta đang set phần footer cho theme.
Trước khi đóng thẻ
bloginfo('charset')` => UTF-8
bloginfo('stylesheet_url') => http://localhost/test/wp-content/themes/theme_name/style.css
9, chúng ta cần thêm template tag

0 để WordPress hiểu được chúng ta đang set phần footer cho theme.

5. sidebar.php

Ở phần sidebar, chúng ta có thể đặt các quảng cáo hay menu cho website cũng được

Hướng dẫn wordpress themes php - chủ đề wordpress php


Chú ý: sidebar.php không cần template tag như

bloginfo('charset')` => UTF-8
bloginfo('stylesheet_url') => http://localhost/test/wp-content/themes/theme_name/style.css
7 và

0 để hiển thị.
sidebar.php không cần template tag như
bloginfo('charset')` => UTF-8
bloginfo('stylesheet_url') => http://localhost/test/wp-content/themes/theme_name/style.css
7 và

0 để hiển thị.

6. index.php

Sau khi đã setup xong header, footer và sidebar, file



...
3 sẽ được viết như sau:



...

7. Loops

Trước khi tìm hiểu cách hiển thị các posts hoặc page trong


4, chúng ta cần tìm hiểu các cách hiển thị posts thông qua loop của WordPress.

Cách 1: Loop mặc định của WordPress.

if (have_posts()) : while (have_posts()) : the_post();
// ...
endwhile;
else:
// ...
endif;

Cách 2: Sử dụng 5 để sửa lại cấu trúc mặc định của loop.

/*
Theme Name: 
Theme URI: 
Author: 
Author URI: 
Description: 
Version: 
License: 
License URI: 
Tags: 
Text Domain: 
...
*/
0

Cách 3: Sử dụng 6.

/*
Theme Name: 
Theme URI: 
Author: 
Author URI: 
Description: 
Version: 
License: 
License URI: 
Tags: 
Text Domain: 
...
*/
1

Cách 4: Sử dụng class 7.

/*
Theme Name: 
Theme URI: 
Author: 
Author URI: 
Description: 
Version: 
License: 
License URI: 
Tags: 
Text Domain: 
...
*/
2

Cách 5: Sử dụng 8.

Cá nhân mình đánh giá thì đây là cách an toàn nhất để tạo một loop riêng biệt hay nhiều loop trên một trang.

/*
Theme Name: 
Theme URI: 
Author: 
Author URI: 
Description: 
Version: 
License: 
License URI: 
Tags: 
Text Domain: 
...
*/
3

8. Hiển thị các posts & page

Dựa vào các cách sử dụng loop để hiển thị posts và page, file



...
3 có thể được viết lại như thế này:

/*
Theme Name: 
Theme URI: 
Author: 
Author URI: 
Description: 
Version: 
License: 
License URI: 
Tags: 
Text Domain: 
...
*/
4

WordPress đã hỗ trợ cho chúng ta những template tags như


>

    
    Vuzic Title
    
    
    

>
...
0,

>

    
    Vuzic Title
    
    
    

>
...
1, etc. để hiển thị nội dung của một post.

Ngoài ra, nếu người dùng muốn set "avatar" cho các posts, chúng ta có thể sử dụng template tag


>

    
    Vuzic Title
    
    
    

>
...
2. Ví dụ:

/*
Theme Name: 
Theme URI: 
Author: 
Author URI: 
Description: 
Version: 
License: 
License URI: 
Tags: 
Text Domain: 
...
*/
5

Chú ý: Cần bật tính năng hiển thị thumbnail cho các posts bằng cách thêm đoạn code: Cần bật tính năng hiển thị thumbnail cho các posts bằng cách thêm đoạn code:

/*
Theme Name: 
Theme URI: 
Author: 
Author URI: 
Description: 
Version: 
License: 
License URI: 
Tags: 
Text Domain: 
...
*/
6

vào file


>

    
    Vuzic Title
    
    
    

>
...
3 (sẽ nói ở dưới ạ ).
Hướng dẫn wordpress themes php - chủ đề wordpress php
).

Kết quả: (Mình lười quá nên sử dụng theme Twenty Sixteen có sẵn của WordPress để test hihi )

Hướng dẫn wordpress themes php - chủ đề wordpress php
)

Hướng dẫn wordpress themes php - chủ đề wordpress php

=>

Hướng dẫn wordpress themes php - chủ đề wordpress php

9. Hook, Action & Filter

Hook

Hiểu đơn giản nhất thì Hook là tên gọi cho các functions mặc định của WordPress.Hook là tên gọi cho các functions mặc định của WordPress.

Hook được chia ra làm 2 loại: Action (về mặt event) và Filter (về mặt nội dung).Action (về mặt event) và Filter (về mặt nội dung).

Chúng ta dùng function


>

    
    Vuzic Title
    
    
    

>
...
4 và

>

    
    Vuzic Title
    
    
    

>
...
5 để override lại các hook của WordPress.

Action

Hướng dẫn wordpress themes php - chủ đề wordpress php

Ví dụ, nếu muốn tính năng thêm avatar cho các posts sau khi theme được khởi taọ, chúng ta có thể móc thêm function của mình vào hook


>

    
    Vuzic Title
    
    
    

>
...
6:

/*
Theme Name: 
Theme URI: 
Author: 
Author URI: 
Description: 
Version: 
License: 
License URI: 
Tags: 
Text Domain: 
...
*/
7

Filter

Hướng dẫn wordpress themes php - chủ đề wordpress php

Ví dụ thông qua code cho dễ hiểu ạ

Hướng dẫn wordpress themes php - chủ đề wordpress php

/*
Theme Name: 
Theme URI: 
Author: 
Author URI: 
Description: 
Version: 
License: 
License URI: 
Tags: 
Text Domain: 
...
*/
8

Cụ thể thì hook


>

    
    Vuzic Title
    
    
    

>
...
7 có tác dụng làm cho nội dung đoạn văn được lấy ra từ database chỉ hiển thị ở view max 50 kí tự, sau đó

>

    
    Vuzic Title
    
    
    

>
...
8.

Sau khi được override lại bằng function


>

    
    Vuzic Title
    
    
    

>
...
9, đến kí tự thứ 40 sẽ

>

    
    Vuzic Title
    
    
    

>
...
8 thay vì 50 như trước (trong database không thay đổi, chỉ thay đổi ở view).

10. functions.php


>

    
    Vuzic Title
    
    
    

>
...
3 là file quan trọng nhất khi viết một theme WordPress. Bất cứ khi nào load trang, WordPress sẽ tìm đến file

>

    
    Vuzic Title
    
    
    

>
...
3 đầu tiên, xử lý các tác vụ rồi mới xuất ra cho người dùng.

Mình có viết một file core functions.php cơ bản như sau:

/*
Theme Name: 
Theme URI: 
Author: 
Author URI: 
Description: 
Version: 
License: 
License URI: 
Tags: 
Text Domain: 
...
*/
9

Đôi khi,


>

    
    Vuzic Title
    
    
    

>
...
3 cũng có tác dụng như là một
    ...
    



4.

Ví dụ, chúng ta muốn tạo một hàm

    ...
    



5 giống như trong Laravel, bên trong

>

    
    Vuzic Title
    
    
    

>
...
3, chúng ta viết như sau:



...
0

Như vậy, chúng ta có thể sử dụng cú pháp

    ...
    



7 ở bất kỳ file
    ...
    



8 thay vì phải



...
1

như mọi khi

Hướng dẫn wordpress themes php - chủ đề wordpress php

Kết thúc

Trên đây mình đã hướng dẫn các bước cơ bản để tạo một core theme WordPress. Hi vọng bài viết giúp ích cho các bạn. Hẹn gặp lại mọi người trong các bài viết sau

Hướng dẫn wordpress themes php - chủ đề wordpress php

Tham khảo

https://websitesetup.org/html-to-wordpress/