it-swarm-vi.com

Tại sao không có chức năng toàn cầu trong wordpress để trả về đầu ra của bất kỳ lệnh gọi chức năng nào?

Chúng tôi có thẻ mẫu và một số chức năng bắt đầu bằng get. Đôi khi nó chỉ là Nice trong các chủ đề để làm như:

$title = the_title();

để sử dụng html sau này. Đây chỉ là một ví dụ đơn giản, tự nhiên có một số hàm như get_the_title (); Nhưng điều đó chỉ làm việc cho chức năng đó.

Tôi tự hỏi tại sao không có chức năng như thế này:

function get_output() {
    $args     = func_get_args();
    $callback = array_shift($args);
    ob_start();
    call_user_func_array($callback, $args);
    return ob_get_clean();
}

Điều đó có thể chuyển đổi bất kỳ chức năng nào có đầu ra thành một hàm trả về:

$title = get_output('the_title');

Bất cứ ý tưởng tại sao về điều đó chưa bao giờ được nghĩ về? Mỗi tác giả chủ đề hoặc tin tặc có thể sử dụng như vậy, phải không?

3
hakre

Để trả lời trực tiếp cho câu hỏi, WordPress không bao gồm một chức năng cho phần này vì nó không áp dụng cụ thể cho chức năng của WordPress. I E. đó là vấn đề PHP (tiềm năng), không phải WordPress.

Ngoài ra, tôi sẽ không nói rằng trách nhiệm của WordPress là cung cấp giải pháp cho các plugin, v.v. không cung cấp chức năng trả về dữ liệu (trái với phong cách chung của WordPress).

2
Joe Hoyle

Tôi sẽ lập luận rằng get_posts là câu trả lời WP cho yêu cầu của bạn. Thẻ mẫu đã được tạo để sử dụng trong Vòng lặp, nhưng đủ dễ để mọi WP 'hacker' sử dụng get_posts () và gán, ví dụ: $ post-> post_title cho một biến. Lúc đầu thật khó chịu, khi ngừng dựa vào The Loop, nhưng đủ dễ để vượt qua.

2
kevtrout

Vì nó có thể dễ dàng hơn đối với một số nhà phát triển chủ đề, bạn phải thực hiện theo cách nó được thực hiện. Nhưng bạn có thể tự viết hàm:

function get_output($function){
    return call_user_func('get_'.$function);
}

Viết get_the_title () cũng ngắn hơn viết getDefput ('the_title') :)

1
2ndkauboy