Chế độ xem wordpress

Tiếp tục chuỗi bài hướng dẫn tìm lỗi plugin wordpress trong phần 2 này mình trình bày tổng quan về plugin wordpress và phân chia một plugin đơn giản để hiểu rõ hơn về chúng

Nếu chưa cài đặt môi trường hoặc chưa biết sử dụng wordpress thì đọc lại bài trước hướng dẫn tìm lỗi plugin wordpress (phần 1)

Tại sao wordpress lại có tính năng plugin?

Wordpress có nguyên tắc cốt lõi đó là không bao giờ sửa đổi cốt lõi wordpress. Vì sau mỗi lần cập nhật phiên bản wordpress mới sẽ ghi đè nên core. Do đó những tính năng mà người dùng sửa core wordpress sẽ bị mất hoặc hệ thống bị lỗi sau khi cập nhật

Wordpress cho phép ta tạo các plugin từ đơn giản đến phức tạp không gì khác ta chỉnh sửa code core wordpresss

Cấu hình plugin wordpress

Thông thường toàn bộ plugin mã nguồn sẽ nằm trong một thư mục để dễ dàng quản lý. Nếu mã không có nhiều thì plugin chỉ có thể là một tệp duy nhất

Hình bên dưới là plugin được tạo bởi nhiều tệp

Chế độ xem wordpress

cmOs @com0tf3

Theo dõi

1. 4K 56 32

Đã đăng vào ngày 5 tháng 20 năm 2021 11. 47 SA 8 phút đọc

380

1

1

Hướng dẫn tìm lỗi wordpress plugin (phần 2)

  • Report
  • Add to series of me

Tiếp tục chuỗi bài hướng dẫn tìm lỗi plugin wordpress trong phần 2 này mình trình bày tổng quan về plugin wordpress và phân chia một plugin đơn giản để hiểu rõ hơn về chúng

Nếu chưa cài đặt môi trường hoặc chưa biết sử dụng wordpress thì đọc lại bài trước hướng dẫn tìm lỗi plugin wordpress (phần 1)

Tại sao wordpress lại có tính năng plugin?

Wordpress có nguyên tắc cốt lõi đó là không bao giờ sửa đổi cốt lõi wordpress. Vì sau mỗi lần cập nhật phiên bản wordpress mới sẽ ghi đè nên core. Do đó những tính năng mà người dùng sửa core wordpress sẽ bị mất hoặc hệ thống bị lỗi sau khi cập nhật

Wordpress cho phép ta tạo các plugin từ đơn giản đến phức tạp không gì khác ta chỉnh sửa code core wordpresss

Cấu hình plugin wordpress

Thông thường toàn bộ plugin mã nguồn sẽ nằm trong một thư mục để dễ dàng quản lý. Nếu mã không có nhiều thì plugin chỉ có thể là một tệp duy nhất

Hình bên dưới là plugin được tạo bởi nhiều tệp

Hình bên dưới là plugin được tạo bởi một tệp

Dù plugin được tạo ra từ nhiều tệp hay một tệp thì chúng đều cần một tệp chỉ mục. Tệp này chỉ dành cho wordpress biết nó là một plugin

This file index bao gồm 2 thành phần

  • tiêu đề plugin. Là phần chú thích nằm trên cùng của chỉ mục tệp. Cung cấp thông tin cho wordpress
  • Mã số. Xử lý mã của plugin
/**
 * Plugin Name: YOUR PLUGIN NAME
 */
 
 function hello_world() {
     echo "Hello World";
 }
 
 hello_world();
Tiêu đề plugin

Plugin header is into a section could not missing of a plugin. Nó chứa các trường cần thiết để giúp wordpress nhận biết được đâu là code plugin đâu phải không. Tiêu đề plugin tối thiểu phải chứa các trường sau

/**
 * Plugin Name: YOUR PLUGIN NAME
 */

Trường Plugin Name giúp wordpress tìm được plugin và hiển thị chúng lên trang quản trị web. Ngoài trường đó ra thì plugin header còn nhiều trường khác nữa

  • Tên plugin. (bắt buộc) Tên plugin của bạn, sẽ được hiển thị trong danh sách Plugin trong Quản trị viên WordPress
  • URI trình cắm. Trang chủ của plugin, phải là một URL duy nhất, tốt nhất là trên trang web của riêng bạn. Điều này phải là duy nhất cho plugin của bạn. Bạn không thể sử dụng một WordPress. URL tổ chức tại đây
  • Sự mô tả. Mô tả ngắn về plugin, như được hiển thị trong phần Plugin trong Quản trị viên WordPress. Giữ mô tả này ít hơn 140 ký tự
  • Phiên bản. Số phiên bản hiện tại của plugin, chẳng hạn như 1. 0 hoặc 1. 0. 3
  • Yêu cầu ít nhất. Phiên bản WordPress thấp nhất mà plugin sẽ hoạt động
  • Yêu cầu PHP. Phiên bản PHP yêu cầu tối thiểu
  • Tác giả. Tên của tác giả plugin. Nhiều tác giả có thể được liệt kê bằng cách sử dụng dấu phẩy
  • URI tác giả. Trang web hoặc hồ sơ của tác giả trên một trang web khác, chẳng hạn như WordPress. tổ chức
  • Giấy phép. Tên viết tắt (slug) của giấy phép plugin (e. g. GPLv2). Thông tin thêm về cấp phép có thể được tìm thấy trong WordPress. hướng dẫn tổ chức
  • URI giấy phép. Một liên kết đến toàn văn của giấy phép (e. g. https. //www. gnu. org/giấy phép/gpl-2. 0. html)
  • Tên miền văn bản. Miền văn bản gettext của plugin. Bạn có thể tìm thêm thông tin trong phần Tên miền văn bản của trang Cách quốc tế hóa Plugin của bạn
  • Đường dẫn tên miền. Đường dẫn tên miền cho phép WordPress biết nơi tìm bản dịch. Bạn có thể tìm thêm thông tin trong phần Đường dẫn tên miền của trang Cách quốc tế hóa Plugin của bạn
  • Mạng. Liệu plugin chỉ có thể được kích hoạt trên toàn mạng hay không. Chỉ có thể được đặt thành true và nên bỏ đi khi không cần thiết

Bây giờ, chúng ta sẽ xem tiêu đề plugin của plugin Hello Dolly

vim /var/wwww/wp-content/plugins/hello.php

Tiêu đề plugin của tệp

/**
 * Plugin Name: YOUR PLUGIN NAME
 */
3 chứa các trường

  • Tên plugin. Tên plugin
  • URI trình cắm. Liên kết đến trang chủ của plugin
  • Sự mô tả. plugin descriptions
  • Phiên bản. phiên bản hiện tại của plugin
  • URI tác giả. Liên kết đến hồ sơ của tác giả

Bây giờ chúng ta cùng xem những trường này sẽ hiển thị như thế nào trên trang web

Cái móc

Hook được sử dụng trong wordpress để tương tác hoặc thay đổi tính năng của core wordpress. Trong wordpress has 2 hook type that is. Hành động và Bộ lọc

Các hành động cho phép thiết lập trình bổ sung dữ liệu cho thành viên hoặc thay đổi cách thức hoạt động của worpdress. Các hành động sẽ được thực thi nếu sự kiện xảy ra trong lúc wordpress core, plugins, themes are doing thi. Hàm gọi lại các hành động thực thi và không có kết quả trả về

Bộ lọc cho phép lập trình viên thay đổi dữ liệu trong lúc wordpress core, plugins, themes đang thực thi. Hàm gọi lại nhận đầu vào là một bài viết sau đó sửa đổi chúng và trả lại cho chương trình. Hàm gọi lại của bộ lọc nên có kết quả trả về để bộ lọc có thể hoạt động bình thường

Plugin phân tích Hello Dolly

Tiếp theo, cùng mình tìm hiểu plugin Hello Dolly để hiểu rõ hơn về cấu trúc cũng như cách hoạt động của một plugin


/**
 * @package Hello_Dolly
 * @version 1.7.2
 */
/*
Plugin Name: Hello Dolly
Plugin URI: http://wordpress.org/plugins/hello-dolly/
Description: This is not just a plugin, it symbolizes the hope and enthusiasm of an entire generation summed up in two words sung most famously by Louis Armstrong: Hello, Dolly. When activated you will randomly see a lyric from Hello, Dolly in the upper right of your admin screen on every page.
Author: Matt Mullenweg
Version: 1.7.2
Author URI: http://ma.tt/
*/

function hello_dolly_get_lyric() {
	/** These are the lyrics to Hello Dolly */
	$lyrics = "Hello, Dolly
Well, hello, Dolly
It's so nice to have you back where you belong
You're lookin' swell, Dolly
I can tell, Dolly
You're still glowin', you're still crowin'
You're still goin' strong
I feel the room swayin'
While the band's playin'
One of our old favorite songs from way back when
So, take her wrap, fellas
Dolly, never go away again
Hello, Dolly
Well, hello, Dolly
It's so nice to have you back where you belong
You're lookin' swell, Dolly
I can tell, Dolly
You're still glowin', you're still crowin'
You're still goin' strong
I feel the room swayin'
While the band's playin'
One of our old favorite songs from way back when
So, golly, gee, fellas
Have a little faith in me, fellas
Dolly, never go away
Promise, you'll never go away
Dolly'll never go away again";

	// Here we split it into lines.
	$lyrics = explode( "\n", $lyrics );

	// And then randomly choose a line.
	return wptexturize( $lyrics[ mt_rand( 0, count( $lyrics ) - 1 ) ] );
}

// This just echoes the chosen line, we'll position it later.
function hello_dolly() {
	$chosen = hello_dolly_get_lyric();
	$lang   = '';
	if ( 'en_' !== substr( get_user_locale(), 0, 3 ) ) {
		$lang = ' lang="en"';
	}

	printf(
		'

%s %s

'
, __( 'Quote from Hello Dolly song, by Jerry Herman:' ), $lang, $chosen ); } // Now we set that function up to execute when the admin_notices action is called. add_action( 'admin_notices', 'hello_dolly' ); // We need some CSS to position the paragraph. function dolly_css() { echo " "; } add_action( 'admin_head', 'dolly_css' );

Đầu tiên là phần Plugin Header phần này mình đã nói ở phần trên nên mình không nhắc lại nữa. Tiếp theo mình sẽ đi đến phần mã của plugin. Đây là plugin với mục đích giành cho người mới tiếp cận plugin wordpress nên mã của nó rất đơn giản và không có gì

Đoạn code trên không dài và cũng rất dễ hiểu, code gồm 2 hàm

/**
 * Plugin Name: YOUR PLUGIN NAME
 */
4 và
/**
 * Plugin Name: YOUR PLUGIN NAME
 */
0

  • /**
     * Plugin Name: YOUR PLUGIN NAME
     */
    
    4. Lấy ngẫu nhiên một dòng trong lời bài hát Hello Dolly và hiển thị ra
  • /**
     * Plugin Name: YOUR PLUGIN NAME
     */
    
    0. CSS chỉnh sửa chính cho nội dung hiển thị ra

Continue to ta to idea has 2 line code.

/**
 * Plugin Name: YOUR PLUGIN NAME
 */
3,
/**
 * Plugin Name: YOUR PLUGIN NAME
 */
4. Hai dòng đăng ký hook này khi có sự kiện tương ứng xảy ra thì chức năng đăng ký sẽ được thực thi

Giải thích ý nghĩa

  • /**
     * Plugin Name: YOUR PLUGIN NAME
     */
    
    3. Hàm
    /**
     * Plugin Name: YOUR PLUGIN NAME
     */
    
    6 thực sự chào khi sự kiện admin_notices được gọi
  • /**
     * Plugin Name: YOUR PLUGIN NAME
     */
    
    4. Hàm
    /**
     * Plugin Name: YOUR PLUGIN NAME
     */
    
    0 thực thi khi sự kiện admin_heade được gọi

Ý nghĩa hook

  • admin_notices. Hiển thị thông báo trên màn hình quản trị
  • quản trị viên. Show HTML in
    /**
     * Plugin Name: YOUR PLUGIN NAME
     */
    
    9 of HTML

To biêt are many event more than please into link. https. // codex. báo chí. org/Plugin_API/Action_Reference

Cùng xem kết quả trên web khi plugin này hoạt động

Trang cài đặt của plugin

Ngoài những plugin đơn giản như ví dụ trên thì hầu hết các plugin đều có nhiều tính năng khác nhau. Để quản lý các tính năng này thì bản thân plugin đã tạo ra trang quản lý để thực hiện cài đặt và cấu hình tương ứng với nhu cầu của người dùng

Hình trên là menu của plugin Ajax Load More (cho phép cuộn vô hạn như facebook)

Với mỗi plugin khác nhau menu sẽ khác nhau và các chức năng cũng khác nhau. Khi muốn cài đặt hay chỉnh sửa những gì liên quan đến plugin thì ta vào menu tương đồng của plugin để thực hiện cho phù hợp

Ngoài việc tạo ra một menu riêng, plugin có thể tạo một mục con trong mục Cài đặt của wrodpress. Trong này cũng chứa các cài đặt cho plugin đó

Phần 2 của loạt bài hướng dẫn tìm lỗi worpdress xin dừng tại đây. Hẹn các bạn trong bài thứ 3 (Tìm lỗi SQL injection)