Truyền tham số trong WordPress

Bài viết này sẽ hướng dẫn cho các bạn cách truyền tham số trong WordPress. Giống như bất kỳ gói mã nguồn nào khác được viết bằng PHP, WordPress cũng có khai báo những hàm để cho bạn sử dụng và tạo nên một website với nội dung động. Trong số các hàm của WordPress thì có hàm bạn chỉ sử dụng mà không cần tham số đầu vào, nhưng cũng có nhiều hàm bạn phải truyền tham số đầu vào để lấy được kết quả. Trong các hàm thì sẽ có tham số và đối số, bạn sẽ phải sử dụng chúng để giá trị của hàm trả về sẽ mang nhiều kết quả khác nhau.

Đối với WordPress thì bạn sẽ thấy 3 kiểu tham số đầu vào thông dụng như sau, những kiểu này sẽ được giải thích cho bạn rõ ràng hơn bằng cách tiếp tục đọc xuống nội dung bên dưới.

  1. Hàm không sử dụng tham số
  2. Hàm sử dụng một hoặc nhiều tham số
  3. Hàm sử dụng tham số đầu vào là một chuỗi các giá trị

Hàm không sử dụng tham số

Có những hàm bạn không cần thiết phải truyền tham số đầu vào, giá trị trả về của những hàm này thướng là một nội dung cố định, người dùng không cần phải truyền tham số để thay đổi kết quả trả về của hàm.

<?php the_author_firstname(); ?>

Hàm sử dụng một hoặc nhiều tham số

Đối với các hàm được định nghĩa để người dùng có thể lấy nhiều giá trị trả về khác nhau thì chúng có thể có một hoặc nhiều tham số đầu vào.

<?php bloginfo('name'); ?>

Ví dụ bên trên là hàm lấy thông tin của trang web, có một tham số đầu vào duy nhất đó là thông tin mà bạn cần lấy. Bạn truyền vào ‘name’ có nghĩa là hàm trên sẽ xuất ra tên của trang hiện tại.

Đối với những hàm có nhiều tham số thì bắt buộc phải phải điền đầy đủ tham số nếu như chúng không có giá trị mặc định.

Đối với các hàm có sử dụng tham số đầu vào thì bạn phải chú ý những điều sau:

  • Có nhiều hàm sẽ sử dụng nhiều tham số đầu vào
  • Đối với những hàm có nhiều tham số thì các tham số được cách nhau bởi dấu phẩy
  • Bạn cần phải điền các đối số vào vị trí chính xác của tham số

Nếu như một hàm có sử dụng nhiều tham số đầu vào nhưng bạn điền sai vị trí đối số truyền vào thì coi như kết quả trả về sai hoặc hàm đó không hoạt động được.

Nếu các tham số của hàm không khai báo giá trị mặc định thì bạn bắt buộc phải điền đầy đủ các tham số thì hàm mới hoạt động được.

function sb_plus_number($a, $b) {
	return $a + $b;
}
$x = 10;
$y = 20;
echo sb_plus_number($x, $y); // Kết quả là 30

Nếu hàm có nhiều tham số và có khai báo giá trị mặc định thì tùy trường hợp mà bạn có thể điền đối số hoặc không. Nếu như tham số có giá trị mặc định ở phía sau và bạn chỉ muốn thay đổi thông tin tham số phía trước thì bạn không cần phải điền tất cả tham số.

function sb_plus_number($a, $b = 10) {
	return $a + $b;
}
$x = 10;
echo sb_plus_number($x); // Kết quả là 20

Trong ví dụ bên trên, nếu bạn chỉ muốn thay đổi tham số đầu vào là $a thì bạn không cần phải nhập $b.

function sb_plus_number($a, $b = 10, $c = 30) {
	return $a + $b + $c;
}
$x = 10;
echo sb_plus_number($x, 10, 10); // Kết quả là 30

Trong ví dụ bên trên, nếu bạn chỉ muốn thay đổi giá trị của $a và $c nhưng giá trị mặc định của $b được khai báo và $b được đặt nằm giữa, mặc dù bạn không muốn thay đổi $b nhưng bạn cũng phải nhập giá trị vào, nếu bạn không nhập thì hàm sẽ được hiểu là bạn điền vào là $a và $b, còn $c thì được giữ mặc định.

function sb_plus_number($a, $b = 10, $c = 30) {
	return $a + $b + $c;
}
$x = 10;
echo sb_plus_number($x, 10); // Kết quả là 50

Trong trường hợp tất cả tham số đều có giá trị mặc định và bạn không muốn thay đổi những giá trị này thì bạn có thể gọi hàm như kiểu hàm không có tham số.

function sb_plus_number($a = 1, $b = 2, $c = 3) {
	return $a + $b + $c;
}
echo sb_plus_number(); // Kết quả là 6

Hàm sử dụng tham số đầu vào là một chuỗi các giá trị

Và kiểu cuối cùng là hàm sử dụng tham số đầu vào là một chuỗi các giá trị, kiểu này sẽ giúp bạn thao tác nhanh hơn, tiết kiệm nhiều thời gian trong quá trình viết code. Quay trở lại với ví dụ hàm có 3 tham số, trong đó 2 tham số phía sau là có giá trị mặc định.

function sb_plus_number($a, $b = 10, $c = 30) {
	return $a + $b + $c;
}
$x = 10;
echo sb_plus_number($x, 10, 10); // Kết quả là 30

Mặc dù bạn không muốn thay đổi giá trị của $b nhưng bạn cũng phải nhập vào giá trị này, nếu bạn không nhập thì kết quả trả về sẽ sai. Để cải thiện điều này, WordPress cung cấp cho bạn cách truyền tham số theo kiểu chuỗi truy vấn.

<?php list_cats(TRUE, 'All', 'ID', 'asc', '', TRUE, FALSE, FALSE, TRUE, TRUE, FALSE, '', '', FALSE, '', '', '10,11,12'); ?>

Hàm bên trên là để liệt kê các chuyên mục, ngoại trừ các chuyên mục có ID là 10, 11 và 12. Nếu như bạn truyền tham số theo kiểu thứ 2 bên trên thì bạn phải điền tất cả các giá trị mặc định phía trước, và cuối cùng là tham số bạn muốn thay đổi nằm ở tít phía sau. Thay vì phải như vậy thì bây giờ bạn có thể sử dụng theo kiểu bên dưới:

<?php wp_list_cats('exclude=10,11,12'); ?>

So với ví dụ trước đó thì hàm bên trên được rút ngắn đi khá nhiều, bạn sẽ viết code nhanh hơn và giảm bớt những thứ phải ghi nhớ lại trong đầu.

Tuy vậy, cách truyền tham số theo kiểu chuỗi truy vấn bên trên cũng dù ít dù nhiều nó gây ra điều bất tiện cho các lập trình viên. Bạn phải gõ thêm dấu &, dấu = hoặc các dấu phẩy phân cách giữa các giá trị của đối số. Cũng vì những điều này mà WordPress cung cấp thêm cho bạn cách truyền tham số bằng một mảng các đối số. Đây là một kiểu biến tấu của chuỗi truy vấn, thay vì bạn phải nhập một chuỗi dài loằn ngoằn thì bây giờ bạn chỉ cần sử dụng một mảng các đối số.

$args = array(
	'posts_per_page' => 10,
	'post_type' => 'movies',
	'tax_query' => array(
		array(
			'taxonomy' => 'movie_cat',
			'field' => 'id',
			'terms' => array(5, 10, 15)
		)
	)
);
$query = new WP_Query($args);

Kiểu dữ liệu của tham số

Có 3 loại kiểu dữ liệu mà bạn thường xuyên sử dụng khi lập trình WordPress, đó là: string, integerboolean. Mỗi kiểu dữ liệu đều mang một ý nghĩa riêng, bạn có thể tiếp tục đọc xuống bên dưới để hiểu rõ hơn.

String

String hoặc chúng ta gọi theo Tiếng Việt là một chuỗi, là một ký tự hoặc nhiều ký tự hoặc nhiều từ được nối với nhau. Trong ví dụ hàm bloginfo thì tham số đầu vào đó là một giá trị kiểu chuỗi.

<?php bloginfo('name'); ?>

Trong PHP, một chuỗi bạn phải đặt trong dấu nháy đơn hoặc dấu nháy kép. Nếu như trong giá trị của chuỗi có chứa dấy nháy đơn thì bạn có thể sử dụng dấu nháy kép để chứa chuỗi này, ngược lại nếu trong chuỗi có chứa dấu nháy kép thì bạn có thể sử dụng dấu nháy đơn để chứa chuỗi. Ngoài ra thì bạn cũng có thể sử dụng dấu xuyệt phải để nhập các chuỗi có ký tự đặc biệt trùng với dấu bọc của chuỗi.

<?php
$chuoi_nhay_don = 'Ban dang doc bai tren HocWP';
$chuoi_nhay_kep = "Bai viet nay laf noi dung cua HocWP";
$chuoi = 'This\'s HocWP Blog'; // Bạn có thể sử dụng \' để nhập ký tự đặc biệt
?>

Integer

Integer hay chúng ta gọi theo Tiếng Việt là số nguyên, đó là những con số (…, -2, -1, 0, 1, 2, …). Một số nguyên có thể là số âm (số nguyên âm), hoặc cũng có thể là số dương (số nguyên dương) hoặc là số không âm (số lớn hơn hoặc bằng 0). Kiểu số nguyên thường được sử dụng trong các hàm liên quan đến ngày tháng hoặc càm hàm có liên quan đến id của đối tượng.

<?php get_permalink('100'); ?>
<?php get_permalink(100); ?>

Trong trường hợp tham số đầu vào là một số nguyên thì bạn có thể điền vào số hoặc là chuỗi như ví dụ bên trên. WordPress có thể hiểu được chính xác những gì bạn nhập nên trong trường hợp ví dụ bên trên thì cả hai đều đúng.

Boolean

Kiểu boolean hay chúng ta thường dịch nôm na là kiểu đúng sai, cũng như cái tên của nó, kiểu dữ liệu này chỉ chứa 2 giá trị đó là đúng hoặc sai.

Một tham số được khai báo với kiểu dữ liệu là boolean thì đối số truyền vào thường là 1 (TRUE) hoặc 0 (FALSE). Ngoài ra thì bạn có thể sử dụng các từ như true, false như giải thích bên dưới.

  • 1 = TRUE = true
  • 0 = FALSE = false

Chú ý là bạn không được sử dụng dấu nháy đơn hoặc dấu nháy kép cho kiểu dữ liệu boolean. Trong trường hợp truyền tham số theo kiểu chuỗi truy vấn thì bạn sử dụng số 1 và số 0.

Callback

Callback là để chỉ chúng ta gọi một hàm khác thực thi bên trong hàm hiện tại. Một callback có thể là một string nếu như hàm bạn muốn gọi được viết bên ngoài class, nếu bạn muốn gọi hàm bên trong một class thì bạn phải sử dụng mảng.

function sb_add_to_head() {
	echo '<meta name="description" content="HocWP Blog" />';
}
add_action('wp_head', 'sb_add_to_head');

Đối với hàm được khai báo bên ngoài class thì bạn gọi như ví dụ bên trên với callback là một string.

class SB_Theme {
	function __construct() {
		add_action('wp_head', array($this, 'add_to_head'));
	}
	
	function add_to_head() {
		echo '<meta name="description" content="HocWP Blog" />';
	}
}
$sb_theme = new SB_Theme();

Ví dụ bên trên là trường hợp bạn gọi callback ngay trong hàm của class.

class SB_WP {
	function add_to_head() {
		echo '<meta name="description" content="HocWP Blog" />';
	}
}
$sb_wp = new SB_WP();
add_action('wp_head', array($sb_wp, 'add_to_head'));

Ví dụ bên trên là trường hợp bạn gọi callback bên ngoài class.

class SB_Team {
	public static function add_to_head() {
		echo '<meta name="description" content="HocWP Blog" />';
	}
}
add_action('wp_head', array('SB_Team', 'add_to_head'));

Ví dụ bên trên là trường hợp bạn gọi callback bên ngoài class và callback này là hàm thuộc kiểu static.

Leave your comment

Leave a Reply

Your email address will not be published. Required fields are marked *