Bạn có thể sử dụng php trên wordpress không?

Mã WordPress, đặc biệt là mã PHP back-end, thường là một mớ hỗn độn—ngay cả trong lõi WP. Nhưng mã kế thừa không phải là lý do. Tìm hiểu cách phát triển các tùy chỉnh WP đúng cách để mã của bạn có thể đọc và bảo trì được

Qua

Andrey Shalashov

Andrey là nhà phát triển web full-stack và chuyên gia về WordPress. Gần đây, trọng tâm của anh ấy là điện toán không có máy chủ và JAMstack

ĐĂNG LẠI

ĐĂNG LẠI

WordPress là công nghệ trang web được sử dụng rộng rãi nhất trên hành tinh và có lý do chính đáng. Tuy nhiên, mã kế thừa trong lõi của nó là một mớ hỗn độn và vấn đề này đổ dồn cho các nhà phát triển bên thứ ba. Một số nhà phát triển coi đây là cái cớ để cắt giảm mã PHP WordPress của riêng họ, nhưng cách tiếp cận này tốn kém hơn về lâu dài đối với tất cả trừ những thay đổi nhỏ nhất

Trong Phần 1 của loạt bài gồm hai phần của chúng tôi, chúng tôi đã tập trung vào các công cụ quy trình công việc và dự án tổng thể, tiếp theo là phát triển giao diện người dùng. Bây giờ là lúc để lấy sừng của con bò tót và vật lộn với PHP. Cụ thể, cách làm theo các phương pháp hay nhất khi làm việc với mã WordPress back-end. Bạn có thể coi đây là một hướng dẫn PHP/WordPress, nhưng nâng cao hơn một chút, với giả định rằng bạn đã thực hiện một số tùy chỉnh back-end WordPress

Vì vậy, những nguyên tắc thiết kế phần mềm hiện đại và các tính năng PHP nào sẽ mang lại cho bạn giá trị tốt nhất cho thời gian của bạn?

Phát triển WordPress hiện đại Phương pháp hay nhất #1. Thực hiện theo "Tách rời mối quan tâm"

Tách biệt các mối quan tâm có nghĩa là các phần của mã PHP WordPress có chức năng hoặc mục đích khác nhau không được trộn lẫn với nhau. Thay vào đó, chúng nên được tổ chức thành các phần hoặc mô-đun riêng biệt, truyền dữ liệu cho nhau thông qua một giao diện xác định. (Giao diện là một tập hợp các tham số được xác định mà một mô-đun lấy làm đầu vào và những gì nó xuất ra trở lại. ) Một thuật ngữ liên quan chặt chẽ là nguyên tắc trách nhiệm duy nhất. Mỗi mô-đun mã (hoặc chức năng) chỉ chịu trách nhiệm cho một thứ

Mục tiêu cuối cùng của việc tuân theo các nguyên tắc này là tạo ra mã có tính mô-đun và do đó có thể bảo trì, mở rộng và tái sử dụng

Đó là một điều khá thú vị, vì vậy hãy xem một ví dụ về một số PHP WordPress (từ lõi WordPress) khiến mọi thứ rối tung lên. Phong cách viết mã này thường được gọi là “mã spaghetti” vì việc hiểu hoạt động bên trong của nó gần như là không thể. Đoạn trích dưới đây đã được biên tập lại cho ngắn gọn;

$id = isset( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : 0;

    get_blog_prefix( $id );
    $sql         = "SELECT * FROM {$blog_prefix}options
        WHERE option_name NOT LIKE %s
        AND option_name NOT LIKE %s";
    $query       = $wpdb->prepare(
        $sql,
        $wpdb->esc_like( '_' ) . '%',
        '%' . $wpdb->esc_like( 'user_roles' )
    );
    $options     = $wpdb->get_results( $query );
    foreach ( $options as $option ) {
        if ( strpos( $option->option_value, "\n" ) === false ) {
            ?>
            
                option_name, array( 'siteurl', 'home' ) ) ) { ?>
                

Trước hết, nó hoàn toàn không thể hiểu được. Và tôi thích rằng bình luận duy nhất là

function betterSiteSettings($args)
{
    $data = WP_Settings_Query($args);
    // process $data here
    $context = array_merge([], $data_processed, $other_data);
    return Template::render('template.name', $context);
}
1, điều này hoàn toàn dư thừa. Chúng tôi có truy vấn cơ sở dữ liệu, xử lý kết quả truy vấn, xử lý bổ sung được nhúng trong HTML (có một
function betterSiteSettings($args)
{
    $data = WP_Settings_Query($args);
    // process $data here
    $context = array_merge([], $data_processed, $other_data);
    return Template::render('template.name', $context);
}
2/
function betterSiteSettings($args)
{
    $data = WP_Settings_Query($args);
    // process $data here
    $context = array_merge([], $data_processed, $other_data);
    return Template::render('template.name', $context);
}
3 được lồng vào đó nếu bạn không chú ý), thoát đầu ra và tạo khuôn mẫu HTML tất cả được kết hợp với nhau. Một vấn đề khác là tham số
function betterSiteSettings($args)
{
    $data = WP_Settings_Query($args);
    // process $data here
    $context = array_merge([], $data_processed, $other_data);
    return Template::render('template.name', $context);
}
4 đến trực tiếp từ
function betterSiteSettings($args)
{
    $data = WP_Settings_Query($args);
    // process $data here
    $context = array_merge([], $data_processed, $other_data);
    return Template::render('template.name', $context);
}
5 toàn cầu trái ngược với việc truyền tham số thực tế cho hàm

Nhìn vào điều này, hoàn toàn dễ hiểu tại sao lõi WordPress hầu như không thay đổi trong nhiều năm. Tái cấu trúc loại mã này—đặc biệt là trong khi duy trì hành vi hiện có—là một nhiệm vụ thực sự hoành tráng mà không ai muốn làm

Vì vậy, làm thế nào để chúng ta làm điều đó đúng cách? . Chúng tôi đã đề cập ở trên những phẩm chất mà chúng ta nên phấn đấu. Chúng tôi cần mã PHP tùy chỉnh của WordPress để có thể bảo trì và mô-đun hóa. Hãy xem cách chúng ta có thể chia mã ở trên thành các mô-đun

  • Rõ ràng là các truy vấn SQL phải ở trong một mô-đun riêng biệt. WordPress đã có một lớp
    function betterSiteSettings($args)
    {
        $data = WP_Settings_Query($args);
        // process $data here
        $context = array_merge([], $data_processed, $other_data);
        return Template::render('template.name', $context);
    }
    
    6 được trừu tượng hóa độc đáo nên được sử dụng làm ví dụ
  • Tất cả HTML đi vào một mẫu. Chúng tôi sẽ giới thiệu thêm về tạo khuôn mẫu PHP bên dưới
  • Mã PHP còn lại phải được bao bọc trong một hàm—một vài hàm nếu mã quá dài hoặc phức tạp đối với một hàm. Các tham số như
    function betterSiteSettings($args)
    {
        $data = WP_Settings_Query($args);
        // process $data here
        $context = array_merge([], $data_processed, $other_data);
        return Template::render('template.name', $context);
    }
    
    4 được truyền qua đối số hàm

Đây là một bản viết lại đơn giản hóa rất nhiều của ví dụ trên

function betterSiteSettings($args)
{
    $data = WP_Settings_Query($args);
    // process $data here
    $context = array_merge([], $data_processed, $other_data);
    return Template::render('template.name', $context);
}

Phương pháp hay nhất về phát triển WordPress hiện đại #2. Tránh các biến toàn cầu

WordPress có quá nhiều biến toàn cầu. Tại sao các biến toàn cầu xấu? . Bất kỳ đoạn mã PHP nào—và điều đó có nghĩa là bất kỳ plugin nào được cài đặt trong WordPress—đều có thể đọc và ghi các biến toàn cầu, vì vậy không có gì đảm bảo rằng chúng chứa dữ liệu hợp lệ. Cố gắng hiểu những biến toàn cục nào được sử dụng trong thứ gì đó như Vòng lặp cũng không phải là một nhiệm vụ tầm thường

Hãy xem xét điều này từ một góc độ thực tế. Ví dụ này đến từ WooC Commerce. Có lẽ mọi nhà phát triển WordPress đều biết nó là gì—Vòng lặp




Đoạn mã trên hiển thị mẫu sản phẩm. Làm cách nào để biết sản phẩm nào sẽ hiển thị khi không có thông số nào được chuyển đến

function betterSiteSettings($args)
{
    $data = WP_Settings_Query($args);
    // process $data here
    $context = array_merge([], $data_processed, $other_data);
    return Template::render('template.name', $context);
}
8?

Bây giờ, hãy tưởng tượng chúng tôi có một trang danh mục tìm kiếm và lọc sản phẩm và chúng tôi muốn hiển thị cửa sổ bật lên "chi tiết sản phẩm" trong khi vẫn ở trên cùng một trang. Đằng sau hậu trường, tập lệnh giao diện người dùng thực hiện yêu cầu AJAX để lấy mẫu sản phẩm cụ thể đó. Chúng ta không thể đơn giản gọi




0 vì nó không sử dụng tham số, vì vậy chúng ta cần đặt một vài biến toàn cục để điều này hoạt động

Các trường hợp sử dụng phức tạp hơn sẽ liên quan đến nhiều hơn một mẫu, các móc nối được kích hoạt trong các mẫu đó và các plugin của bên thứ ba thêm lệnh gọi lại của chúng vào các móc nối đó. Nó có thể leo thang nhanh chóng. Chúng tôi không có cách nào để biết những cuộc gọi lại đó dựa trên trạng thái toàn cầu nào. Các plugin của bên thứ ba được tự do sửa đổi bất kỳ biến toàn cầu nào trong các cuộc gọi lại của họ. Thay vì sử dụng hệ thống, chúng tôi bắt đầu chiến đấu với hệ thống, gặp phải những lỗi kỳ lạ đến từ trạng thái toàn cầu không đáng tin cậy

Sẽ hợp lý hơn nếu chuyển ID sản phẩm đó làm tham số phải không?

Phát triển WordPress hiện đại Phương pháp hay nhất #3. Sử dụng lập trình hướng đối tượng (OOP)

Tính mô đun dẫn đến khái niệm đối tượng và lập trình hướng đối tượng. Ở cấp độ rất cơ bản, OOP là một cách tổ chức mã. Các hàm và biến được nhóm lại với nhau thành các lớp và được gọi là các phương thức và thuộc tính lớp tương ứng. Sổ tay Plugin WordPress khuyên bạn nên sử dụng OOP để tổ chức mã PHP tùy chỉnh WordPress của bạn

Một nguyên tắc quan trọng trong OOP là giới hạn quyền truy cập vào các phương thức và thuộc tính—hoặc theo thuật ngữ PHP, biểu thị chúng là




1 hoặc



2—vì vậy chỉ các phương thức lớp khác mới có thể truy cập và thay đổi chúng. Một thuật ngữ OOP cho điều này là đóng gói. Dữ liệu được gói gọn bên trong lớp và cách duy nhất để thay đổi dữ liệu đó là sử dụng các phương thức lớp được cung cấp

Điều này làm cho việc gỡ lỗi và bảo trì mã của bạn dễ dàng hơn nhiều so với khi sử dụng các biến toàn cục có thể được sửa đổi ở bất kỳ đâu trong toàn bộ cơ sở mã. Xem xét biến toàn cục WordPress




3. Bạn có thể truy cập nó ở bất cứ đâu trong mã của mình và rất nhiều chức năng phụ thuộc vào việc sử dụng nó. Điều gì sẽ xảy ra nếu bạn có thể hạn chế sửa đổi chỉ các chức năng cốt lõi của WordPress, nhưng việc đọc sẽ được phép đối với bất kỳ ai?

Đây chỉ là một mô tả rất cơ bản về OOP và cách nó có thể được sử dụng trong quá trình phát triển WordPress hiện đại. Để nghiên cứu sâu hơn, tôi khuyên bạn nên sử dụng sách điện tử của Carl Alexander, Khám phá lập trình hướng đối tượng bằng WordPress, có nội dung hữu ích và toàn diện nhất hiện có về chủ đề OOP trong WordPress

Điều quan trọng cần nhớ là OOP không phải là viên đạn bạc. Mã xấu có thể được viết bằng OOP dễ dàng như với bất kỳ mô hình lập trình nào khác


Hãy đi sâu vào một số lời khuyên cụ thể về việc sử dụng PHP để phát triển WordPress

Thực tiễn tốt nhất về PHP hiện đại #1. Nhắm mục tiêu PHP 7. 0+

Việc sử dụng các tính năng PHP hiện đại đòi hỏi phải có phiên bản PHP hiện đại. Đơn giản là không có lý do gì để hỗ trợ các phiên bản PHP thấp hơn 7. 0. Ngay cả lõi WordPress cũng sẽ yêu cầu PHP 7. 0 sớm nhất là vào cuối năm 2019

Tuy nhiên, bạn nên kiểm tra phiên bản tối thiểu của mình để tránh "màn hình trắng chết chóc" trong môi trường không tương thích. Đoạn mã bên dưới hiển thị bằng cách sử dụng tiêu đề plugin để khai báo phiên bản PHP tối thiểu với điều kiện bảo vệ trong mã

function betterSiteSettings($args)
{
    $data = WP_Settings_Query($args);
    // process $data here
    $context = array_merge([], $data_processed, $other_data);
    return Template::render('template.name', $context);
}
7

Thực tiễn tốt nhất về PHP hiện đại #2. Áp dụng các tiêu chuẩn công nghiệp PHP (Hướng dẫn kiểu viết mã PSR-2)

PSR là các đề xuất được xuất bản bởi PHP Framework Interop Group. Chúng là các tiêu chuẩn ngành thực tế trong bất kỳ quy trình công việc PHP hiện đại nào và có thể nói một cách an toàn rằng toàn bộ cộng đồng PHP tuân theo các tiêu chuẩn này. PSR-2 là một đề xuất mô tả phong cách viết mã. Các framework PHP phổ biến như Symfony và Laravel tuân theo PSR-2

Tại sao bạn lại sử dụng PSR-2 thay vì tiêu chuẩn mã hóa WordPress? . Điều đó có thể hiểu được vì lõi WordPress phải tuân theo các tiêu chuẩn riêng của nó. Nó phải hỗ trợ PHP 5. 2 cho đến rất gần đây và PSR-2 không tương thích với PHP 5. 2

Nó có thể không rõ ràng, nhưng không có yêu cầu sử dụng các tiêu chuẩn mã hóa WordPress trừ khi bạn cam kết với cốt lõi. Sẽ không có vấn đề gì khi gửi plugin tuân theo tiêu chuẩn PSR-2 vào thư mục plugin WordPress. Trên thực tế, có một số lập luận rất tốt để làm như vậy

Thực tiễn tốt nhất về PHP hiện đại #3. Sử dụng Công cụ mẫu PHP

PHP không phải là một công cụ mẫu. Nó bắt đầu như một, nhưng sau đó phát triển thành một ngôn ngữ lập trình đầy đủ tính năng và không có lý do gì để tiếp tục sử dụng nó để tạo khuôn mẫu. Hai công cụ mẫu phổ biến nhất cho PHP là Twig và Blade, tương ứng được sử dụng bởi Symfony và Laravel. Bài viết này sẽ sử dụng Twig làm công cụ tạo khuôn mẫu; . Tôi xin bạn xem xét cả hai và tự quyết định cái nào phù hợp với mình nhất

Ví dụ dưới đây so sánh một mẫu PHP và mẫu Twig tương ứng của nó. Hiển thị và thoát đầu ra đặc biệt dài dòng trong ví dụ PHP

function betterSiteSettings($args)
{
    $data = WP_Settings_Query($args);
    // process $data here
    $context = array_merge([], $data_processed, $other_data);
    return Template::render('template.name', $context);
}
8

Trong Twig, điều này ngắn gọn và dễ đọc hơn

function betterSiteSettings($args)
{
    $data = WP_Settings_Query($args);
    // process $data here
    $context = array_merge([], $data_processed, $other_data);
    return Template::render('template.name', $context);
}
9

Ưu điểm chính của Twig là

  • Cú pháp dễ đọc và ngắn gọn
  • Thoát đầu ra tự động
  • Tiện ích mở rộng mẫu thông qua kế thừa và khối

Hiệu suất khôn ngoan, Twig biên dịch thành các mẫu PHP và hầu như không có chi phí. Twig chỉ có một tập hợp con các cấu trúc ngôn ngữ PHP chỉ giới hạn trong việc tạo khuôn mẫu. Điều này buộc các nhà phát triển phải loại bỏ logic nghiệp vụ khỏi các mẫu, do đó thực thi tách biệt các mối quan tâm

Thậm chí còn tồn tại Twig cho WordPress. Nó được gọi là Timber và đó là một cách tuyệt vời để bắt đầu tạo các mẫu tốt hơn. Chủ đề dành cho người mới bắt đầu của Timber là một ví dụ hoàn hảo về việc tổ chức các chủ đề theo cách OOP

Thực tiễn tốt nhất về PHP hiện đại #4. Sử dụng Trình soạn thảo

Composer là một trình quản lý phụ thuộc cho PHP. Đó là một công cụ cho phép khai báo các thư viện mà một dự án đang sử dụng, sau đó nó tự động tải xuống, cài đặt và cập nhật chúng. Sau đó, bạn chỉ cần bao gồm tệp tự động tải của Nhà soạn nhạc




5 thay vì yêu cầu từng thư viện theo cách thủ công

Các plugin và chủ đề WordPress thường không sử dụng bất kỳ thư viện của bên thứ ba nào. Điều này một phần là do WordPress có API mở rộng đáp ứng hầu hết mọi nhu cầu và một phần là do xung đột phiên bản có thể xảy ra. Hãy xem xét hai plugin yêu cầu cùng một thư viện PHP nhưng các phiên bản khác nhau của nó. Plugin chạy đầu tiên có phiên bản chính xác và plugin thứ hai cũng có phiên bản đó. Đây hoàn toàn có thể là một tình huống màn hình trắng chết chóc khác

Để tránh xung đột, quản lý phụ thuộc nên được sử dụng ở cấp ứng dụng, tôi. e. , toàn bộ trang web WordPress. Đây là những gì Roots (Bedrock, cụ thể hơn) làm. Khi được sử dụng ở cấp độ gói (plugin hoặc chủ đề), Trình soạn thảo có thể gây ra xung đột khi sử dụng thư viện của bên thứ ba. Đó là một vấn đề đã biết. Giải pháp duy nhất tồn tại cho đến nay là đổi tên không gian tên của thư viện bên ngoài đó thành một thứ gì đó độc đáo và đó không phải là một nhiệm vụ tầm thường

Mặc dù vậy, vẫn có một cách sử dụng cho Composer. tự động tải các lớp học của riêng bạn. Nhưng trước khi tiến xa hơn với tính năng tự động tải, chúng ta cần bắt kịp tốc độ với các không gian tên PHP

Thực tiễn tốt nhất về PHP hiện đại #5. Sử dụng không gian tên

Lõi WordPress là một dự án kế thừa, nó sử dụng một không gian tên chung hoặc nói cách khác, không có không gian tên nào cả. Bất kỳ lớp hoặc hàm nào được khai báo trên toàn cầu (có nghĩa là không nằm trong lớp hoặc hàm khác) đều có thể nhìn thấy ở bất kỳ đâu trong toàn bộ cơ sở mã. Tên của chúng phải là duy nhất không chỉ trong cơ sở mã của bạn mà còn cho tất cả các plugin và chủ đề được sử dụng ngay bây giờ hoặc có thể được sử dụng trong tương lai

xung đột đặt tên (e. g. , khai báo một hàm có tên đã tồn tại) thường dẫn đến màn hình trắng chết chóc và chúng tôi không muốn điều đó. WordPress Codex khuyên nên thêm tiền tố vào tất cả các chức năng và lớp của bạn bằng một thứ gì đó độc đáo. Vì vậy, thay vì có các tên lớp đơn giản như




6, chúng tôi nhận được một cái gì đó như



7 trong đó “Akrte” là tiền tố duy nhất mà tôi vừa tạo ra

Không gian tên có thể được xem dưới dạng nhóm—hoặc thư mục, nếu chúng ta sử dụng phép loại suy hệ thống tệp—giúp tổ chức mã và tránh xung đột tên. Bạn có thể có các không gian tên phức tạp được phân tách bằng dấu gạch chéo, giống như các thư mục lồng nhau. (Không gian tên PHP đặc biệt sử dụng dấu gạch chéo ngược. )

Những phần không gian tên đó được gọi là không gian tên con. Lớp ví dụ của chúng tôi




7 sẽ là



9 nếu được thực hiện bằng cách sử dụng không gian tên. Ở đây
function betterSiteSettings($args)
{
    $data = WP_Settings_Query($args);
    // process $data here
    $context = array_merge([], $data_processed, $other_data);
    return Template::render('template.name', $context);
}
70 và
function betterSiteSettings($args)
{
    $data = WP_Settings_Query($args);
    // process $data here
    $context = array_merge([], $data_processed, $other_data);
    return Template::render('template.name', $context);
}
71 là các phần không gian tên (hoặc không gian tên con) và



6 là tên lớp. Sau đó, bạn có thể thêm một câu lệnh
function betterSiteSettings($args)
{
    $data = WP_Settings_Query($args);
    // process $data here
    $context = array_merge([], $data_processed, $other_data);
    return Template::render('template.name', $context);
}
73 và chỉ sử dụng tên lớp sau đó. Nó chắc chắn trông tốt hơn

function betterSiteSettings($args)
{
    $data = WP_Settings_Query($args);
    // process $data here
    $context = array_merge([], $data_processed, $other_data);
    return Template::render('template.name', $context);
}
9

Rõ ràng, các không gian tên phải là duy nhất; . Ví dụ: lớp WooC Commerce

function betterSiteSettings($args)
{
    $data = WP_Settings_Query($args);
    // process $data here
    $context = array_merge([], $data_processed, $other_data);
    return Template::render('template.name', $context);
}
74 có thể được thực hiện lại với các không gian tên như thế này

function betterSiteSettings($args)
{
    $data = WP_Settings_Query($args);
    // process $data here
    $context = array_merge([], $data_processed, $other_data);
    return Template::render('template.name', $context);
}
1

Cơ sở mã WooC Commerce ngày nay sử dụng không gian tên;

Thực tiễn tốt nhất về PHP hiện đại #6. Sử dụng Trình tải tự động

Trong hầu hết các luồng công việc PHP, cách thông thường để liên kết các tệp PHP với nhau là sử dụng các câu lệnh

function betterSiteSettings($args)
{
    $data = WP_Settings_Query($args);
    // process $data here
    $context = array_merge([], $data_processed, $other_data);
    return Template::render('template.name', $context);
}
75 hoặc
function betterSiteSettings($args)
{
    $data = WP_Settings_Query($args);
    // process $data here
    $context = array_merge([], $data_processed, $other_data);
    return Template::render('template.name', $context);
}
76. Khi một dự án phát triển, bạn sẽ nhận được hàng chục câu lệnh
function betterSiteSettings($args)
{
    $data = WP_Settings_Query($args);
    // process $data here
    $context = array_merge([], $data_processed, $other_data);
    return Template::render('template.name', $context);
}
75 trong tệp plugin chính của mình. Trình tải tự động tự động bao gồm các tệp và chỉ làm như vậy khi cần. Về mặt kỹ thuật, đó là một chức năng mà một tệp chứa một lớp hoặc một chức năng xảy ra lần đầu tiên khi nó được bắt gặp trong mã. Không cần phải thêm bất kỳ câu lệnh
function betterSiteSettings($args)
{
    $data = WP_Settings_Query($args);
    // process $data here
    $context = array_merge([], $data_processed, $other_data);
    return Template::render('template.name', $context);
}
75 nào theo cách thủ công nữa

Thông thường, cũng có một mức tăng hiệu suất đáng kể do trình tải tự động chỉ tải các mô-đun được sử dụng trong một yêu cầu cụ thể. Không có trình tải tự động, toàn bộ cơ sở mã của bạn được bao gồm ngay cả khi yêu cầu chỉ sử dụng, chẳng hạn như 10 phần trăm mã của bạn

Hàm tự động tải cần biết các lớp và hàm của bạn trực tiếp trong tệp nào. Và có một tiêu chuẩn PHP-FIG, PSR-4, cho điều đó

Nó nói rằng một phần của không gian tên, tiền tố, được chỉ định tương ứng với một thư mục cơ sở. Các không gian tên phụ theo sau nó tương ứng với các thư mục bên trong thư mục cơ sở. Cuối cùng, tên lớp tương ứng với tên tệp. Một lớp ví dụ

function betterSiteSettings($args)
{
    $data = WP_Settings_Query($args);
    // process $data here
    $context = array_merge([], $data_processed, $other_data);
    return Template::render('template.name', $context);
}
80 sẽ cần cấu trúc thư mục bên dưới

function betterSiteSettings($args)
{
    $data = WP_Settings_Query($args);
    // process $data here
    $context = array_merge([], $data_processed, $other_data);
    return Template::render('template.name', $context);
}
8

Tiền tố không gian tên

function betterSiteSettings($args)
{
    $data = WP_Settings_Query($args);
    // process $data here
    $context = array_merge([], $data_processed, $other_data);
    return Template::render('template.name', $context);
}
81 tương ứng với thư mục
function betterSiteSettings($args)
{
    $data = WP_Settings_Query($args);
    // process $data here
    $context = array_merge([], $data_processed, $other_data);
    return Template::render('template.name', $context);
}
82 như được chỉ định trong cấu hình trình tải tự động được thảo luận bên dưới. Không gian tên phụ
function betterSiteSettings($args)
{
    $data = WP_Settings_Query($args);
    // process $data here
    $context = array_merge([], $data_processed, $other_data);
    return Template::render('template.name', $context);
}
83 có thư mục
function betterSiteSettings($args)
{
    $data = WP_Settings_Query($args);
    // process $data here
    $context = array_merge([], $data_processed, $other_data);
    return Template::render('template.name', $context);
}
83 tương ứng và lớp



6 được chứa trong
function betterSiteSettings($args)
{
    $data = WP_Settings_Query($args);
    // process $data here
    $context = array_merge([], $data_processed, $other_data);
    return Template::render('template.name', $context);
}
86

May mắn thay, không cần phải tự thực hiện chức năng tự động tải. Nhà soạn nhạc có thể tạo trình tải tự động cho bạn

  1. Cài đặt Trình soạn thảo
  2. Tạo tệp
    function betterSiteSettings($args)
    {
        $data = WP_Settings_Query($args);
        // process $data here
        $context = array_merge([], $data_processed, $other_data);
        return Template::render('template.name', $context);
    }
    
    87 trong thư mục gốc của dự án của bạn. Nó nên chứa những dòng này
function betterSiteSettings($args)
{
    $data = WP_Settings_Query($args);
    // process $data here
    $context = array_merge([], $data_processed, $other_data);
    return Template::render('template.name', $context);
}
6
  1. Chạy
    function betterSiteSettings($args)
    {
        $data = WP_Settings_Query($args);
        // process $data here
        $context = array_merge([], $data_processed, $other_data);
        return Template::render('template.name', $context);
    }
    
    88
  2. Bao gồm
    
    
    
    
    5 ở đầu tệp PHP plugin chính của bạn như thế này
function betterSiteSettings($args)
{
    $data = WP_Settings_Query($args);
    // process $data here
    $context = array_merge([], $data_processed, $other_data);
    return Template::render('template.name', $context);
}
0

Bên cạnh các không gian tên, cơ sở mã mới nhất của WooC Commerce cũng sử dụng trình tải tự động Trình soạn thảo


Với các nguyên tắc thiết kế PHP này được đề cập, đã đến lúc kết hợp tất cả các bài học PHP của chúng tôi với tùy chỉnh back-end của WordPress với một đề xuất cuối cùng

Phương pháp hay nhất về phát triển WordPress hiện đại #4. Cân nhắc sử dụng Roots Stack

Roots là quy trình phát triển WordPress hiện đại toàn diện nhất hiện có. Tuy nhiên, tôi muốn nói rằng nó không nhất thiết phải được sử dụng trong mọi dự án WordPress, bởi vì

  • Rễ phải được sử dụng ngay từ đầu. Lý do phổ biến nhất, thực sự. Tái cấu trúc một dự án hiện tại sẽ quá tốn kém
  • Nó có quan điểm. Tốt khi bạn đồng ý, xấu khi bạn không. Bạn có thể thích các cách khác để tổ chức chủ đề của mình, ví dụ:. Các dự án có ý kiến ​​cũng cần có thời gian để tìm hiểu “đường lối của họ”. ”
  • Không phải ai cũng biết điều đó. Nhà phát triển sẽ đến sau bạn để duy trì trang web mà bạn đã xây dựng bằng ngăn xếp Roots có thể không biết nó là gì và tự hỏi điều gì đã xảy ra với các thư mục WordPress. Chúng ta nên nghĩ về các nhà phát triển WordPress đồng nghiệp của mình

Nói chung, bạn sẽ muốn hiểu đầy đủ tất cả những lợi ích và hạn chế của bất kỳ dự án có quan điểm mạnh mẽ nào trước khi cam kết sử dụng nó.

Nguyên tắc phần mềm và PHP hiện đại. Làm cho sự phát triển back-end của WordPress trở nên mạnh mẽ

Rõ ràng là không có một cách viết phần mềm đúng đắn nào. Các khái niệm, chẳng hạn như tách biệt các mối quan tâm, đã có từ nhiều thập kỷ trước; . Lấy ví dụ, CSS. Ban đầu, chúng tôi đã đặt tên nó là

function betterSiteSettings($args)
{
    $data = WP_Settings_Query($args);
    // process $data here
    $context = array_merge([], $data_processed, $other_data);
    return Template::render('template.name', $context);
}
90 trong HTML, sau đó chúng tôi quyết định rằng các trang CSS riêng biệt là điều cần quan tâm đến việc tách biệt

Nhanh chóng chuyển tiếp một thập kỷ. Các ứng dụng JavaScript ngày nay sử dụng các thành phần như một triển khai tách biệt mối quan tâm. Các nhà phát triển front-end bị thu hút bởi CSS-in-JS, và điều đó về cơ bản có nghĩa là nội tuyến CSS trong HTML một lần nữa (ừm, nó không đơn giản như vậy, nhưng bạn hiểu rồi đấy). Vòng tròn đã hoàn thành

Các phương pháp hay nhất luôn hướng đến việc cải thiện trải nghiệm của nhà phát triển

Các chương trình phải được viết để mọi người đọc và chỉ tình cờ để máy thực thi

Abelson & Sussman, Cấu trúc và diễn giải các chương trình máy tính

Một số thực hành trong hướng dẫn PHP WordPress này rất nhanh và dễ thực hiện trong dự án của bạn. Ví dụ, trình tải tự động. Làm điều đó một lần cho mỗi dự án và chỉ cần tận hưởng. Mặt khác, các ý tưởng kiến ​​trúc phần mềm mới cần thời gian, thực hành và nhiều lần lặp lại để trở nên tiện dụng và thoải mái với. Phần thưởng lớn hơn nhiều, mặc dù. Bạn sẽ không chỉ hiệu quả hơn với những gì bạn làm mà còn tận hưởng những gì bạn làm nhiều hơn. Và việc thường xuyên tận hưởng công việc bạn làm cho khách hàng có lẽ là cách duy nhất để công việc đó bền vững.

Hiểu những điều cơ bản

Bạn có thể sử dụng PHP trong WordPress không?

WordPress được viết bằng PHP làm ngôn ngữ lập trình. Bạn chắc chắn có thể sử dụng PHP nếu bạn muốn phát triển cho WordPress, nhưng bạn không cần phải

Việc sử dụng PHP trong WordPress là gì?

PHP là ngôn ngữ lập trình mà hầu hết cơ sở mã WordPress được viết bằng. Các ngôn ngữ và công nghệ khác được sử dụng bao gồm JavaScript, CSS và HTML

Làm cách nào để chỉnh sửa PHP trong WordPress?

PHP có thể được chỉnh sửa bằng bất kỳ trình soạn thảo văn bản nào vì tệp PHP chỉ là tệp văn bản thuần túy. Tuy nhiên, cách tiếp cận phù hợp sẽ là sử dụng trình chỉnh sửa mã chuyên dụng và phiên bản kiểm soát cơ sở mã của bạn

Tôi có nên học PHP trước WordPress không?

WordPress là một CMS dễ dàng và thân thiện với người dùng. Bạn hoàn toàn không cần học viết mã để thiết lập và chạy trang web của riêng mình bằng WordPress. Hầu hết mọi người giao việc lập trình cho các chuyên gia giống như cách bạn giao việc thay dầu ô tô cho thợ máy.

thẻ

BackEndWordPressPHP

Người làm việc tự do? Tìm công việc tiếp theo của bạn.

Công việc lập trình viên WordPress

Xem thông tin đầy đủ

Andrey Shalashov

Nhà phát triển web

Thông tin về các Tác giả

Andrey là nhà phát triển web toàn diện và chuyên gia WordPress với hơn mười năm kinh nghiệm. Anh ấy là một nhà phát triển đa năng, thoải mái không kém khi xây dựng các ứng dụng web và giao diện người dùng hiện đại bằng cách sử dụng React và làm việc với các công nghệ back-end truyền thống như PHP và cơ sở dữ liệu quan hệ. Kỹ năng phân tích và giải quyết vấn đề của anh ấy bổ sung hoàn hảo cho kinh nghiệm chuyên môn của anh ấy, giúp anh ấy luôn đưa ra các giải pháp chất lượng hàng đầu

Thuê Andrey

Bình luận

Ramses Del Rosario

Bài viết xuất sắc. Nó thực sự bao gồm rất nhiều chủ đề mà chúng ta nên tính đến khi cải thiện các tiêu chuẩn mã hóa Wordrpress của mình

binoye jos

I, BinoyJos, have been through my own family law dispute (before becoming an attorney) and know how unique each situation can be and understand the importance of attention to detail. Go check out this link for a simple divorce case to the most challenging high-asset divorce, child custody child support/spousal support. Jos Family Law is the Best Family Lawyer in Long Beach Child Support and Fathers Rights Attorney in Orange County, Los Angeles, and Riverside County. Reach Us: 27201 Puerta Real #120, Mission Viejo, CA 92691, United States +1-7147337066

Andrey

Cảm ơn

Usama Globex

Cảm ơn cho bài viết này tốt đẹp

Sergio Gonzalez Jr.

cảm ơn vì thông tin. Tôi hiện đang làm việc về Sáng tạo nội dung và Wordpress/Shopify Dev. Thật tuyệt khi thấy các nhà phát triển có kinh nghiệm chia sẻ kiến ​​thức và lời khuyên của họ để giúp đỡ người khác. Một lần nữa, cảm ơn bạn rất nhiều

option_value ); ?> />