(91) 350-9520 support@omarine.org M-F: 7 AM - 7 PM; Weekends: 9 AM - 5 PM

Lập trình Web: PHP: WordPress: Tùy biến theme

Trong khi Django là nền tảng tạo ra các ứng dụng mạnh với nhiều tính năng, WordPress tự động hóa cài đặt và làm cho công việc xuất bản trên Internet trở nên dễ dàng.
Các theme, plugin và bản thân WordPress được cập nhật phiên bản tự động thông qua ftp. Để đảm bảo an toàn, máy chủ ftp nên sử dụng ftps theo định nghĩa của RFC 4217, ví dụ proftpd cần cung cấp các chứng chỉ RSA và chứng chỉ EC được ký bởi một chứng chỉ CA hợp lệ.


Có một số phần mềm khách hỗ trợ ftps, FileZilla là một lựa chọn tốt cho WordPress để chuyển file lên server:


WordPress gồm ba phần chính: Lõi, plugin và theme. Theme xác định cách bố trí mà website được thấy trên front-end, điều khiển trình bày nội dung. Trong khi đó, plugin điều khiển cách thức hoạt động và tính năng của website. Phần lõi theo qui tắc chủ đạo trong WordPress là không động tới, nó được cập nhật theo phiên bản WordPress. Việc bổ sung tính năng sử dụng plugin thay thế. Một theme tối thiểu phải có hai file, file khuôn mẫu chính index.php và file style.css.
Tùy biến theme giống như nguyên tắc trong Django, không nên sửa đổi trực tiếp mà tạo một theme gọi là theme con để kế thừa theme cha. Một theme con ít nhất phải có:

  • Thư mục theme con
  • style.css
  • functions.php

Giả sử chúng ta tùy biến theme twentyseventeen, thư mục theme con tốt nhất nên là wp-content/themes/twentyseventeen-child. style.css phải bắt đầu với một tiêu đề có dạng sau:

/*
Theme Name: Twenty Seventeen Child
Theme URI: http://example.com/twenty-seventeen-child/
Description: Twenty Seventeen Child Theme
Author: my team
Author URI: http://example.com
Template: twentyseventeen
Version: 1.0.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Tags: light, dark, two-columns, right-sidebar, responsive-layout, accessibility-ready
Text Domain: twenty-seventeen-child
*/

Trong đó, điều cần lưu ý là dòng Template phải tương ứng với thư mục theme cha, trong ví dụ là twentyseventeen.
Bước cuối cùng là cắm stylesheet cho theme cha và theme con. Tệp functions.php sẽ có nội dung ví dụ như sau:

<?php
function my_theme_enqueue_styles() {

    $parent_style = 'twentyseventeen-style';

    wp_enqueue_style( $parent_style, get_template_directory_uri() . '/style.css' );
    wp_enqueue_style( 'twentyseventeenchild-style',
        get_stylesheet_uri(),
        array( $parent_style ),
        wp_get_theme()->get('Version')
    );
}
add_action( 'wp_enqueue_scripts', 'my_theme_enqueue_styles' );
?>

Trong cuộc gọi tới hàm wp_enqueue_style() cho theme con, đối số array( $parent_style ) đảm bảo stylesheet theme con được tải sau theme cha.
Giống như tùy biến khuôn mẫu trong Django, khuôn mẫu trong theme con sẽ được sử dụng thay cho khuôn mẫu cùng tên trong theme cha.
Khác với style.css hay khuôn mẫu, functions.php của theme con không đè lên phần tương ứng trong theme cha mà được tải bổ sung cho functions.php của theme cha. Ví dụ dưới đây chỉ ra functions.php của theme con thêm biểu tượng favicon:

<?php
function my_favicon_link() {
    echo '<link rel="shortcut icon" href="' . get_stylesheet_directory_uri() . '/favicon.ico" />' . "\n";
}
add_action( 'wp_head', 'my_favicon_link' );
?>

functions.php của theme con được tải trước functions.php của theme cha. Đó là cần thiết, ví dụ một khi trình duyệt đã cache biểu tượng favicon, nó sẽ không yêu cầu favicon nữa và các link biểu tượng favicon đến sau sẽ không có tác dụng


Để xử lý đa ngôn ngữ cho theme con, bạn theo các bước dưới đây:

  • Thêm thư mục ngôn ngữ
    Ví dụ: twentyseventeen-child/languages.
  • Thêm các tệp ngôn ngữ
    Ví dụ: thêm các tệp vi.po và vi.mo cho tiếng Việt vào thư mục ngôn ngữ.
  • Tải textdomain
    Sử dụng hàm load_child_theme_textdomain() trong functions.php trong hành động after_setup_theme. textdomain đối số của hàm load_child_theme_textdomain() sẽ được sử dụng để dịch tất cả các xâu kí tự trong theme con.
  • Sử dụng các hàm gettext để hỗ trợ i18n cho các xâu kí tự

Ví dụ:

<?php
function my_child_theme_setup() {
    load_child_theme_textdomain( 'twenty-seventeen-child', get_stylesheet_directory() . '/languages' );
}
add_action( 'after_setup_theme', 'my_child_theme_setup' );
?>

Một xâu kí tự rồi được kết xuất ví dụ như sau:

<?php
_e( 'Orange', 'twenty-seventeen-child' );
?>

Tệp .mo được tạo từ tệp .po theo cùng cách như trong Django.

Advertisements

Gửi phản hồi

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: