2010-09-23 25 views
5

Tôi đã tạo một plugin lịch và bây giờ tôi muốn hiển thị danh sách sự kiện trong một trong các mẫu của tôi. Mã Tôi đang sử dụng hiện nay, là thế này:Làm cách nào để gọi các hàm từ Plugin của tôi trong mẫu WP?

include_once(WP_CAL_PLUGIN_DIR.'eventcal.class.php'); 

$calendar = new EventCalendar(); 
$events = $calendar->getMultipleEvents('5'); 

(...) 

<table> 
<?php foreach($events as $event) : ?> 
    <tr> 
    <td><span><?php echo $calendar->formatEventTime($event->startTime,'dm'); ?></span></td> 
    <td><span><?php echo $calendar->formatEventTime($event->startTime,'time'); ?></span></td> 
    <td><?php echo $event->name; ?></td> 
    </tr> 
<?php endforeach; ?> 
</table> 

Có cách nào tôi có thể gọi chức năng trong Plugin của tôi mà không cần phải bao gồm các plugin WP và tạo ra một thể hiện lớp mới?

+0

Tại sao bạn không muốn bao gồm plugin WP và tạo phiên bản lớp mới? – bzlm

+0

Tôi đã nghĩ rằng có một cách "WP đúng" hơn để làm điều đó - một cái gì đó tương tự như mã ngắn WP. – Steven

+0

Có. Trong trường hợp đó, bạn nên đăng ký một shortcode. :) http://codex.wordpress.org/Shortcode_API – bzlm

Trả lời

7

Để thực hiện shortcode bên trong một mẫu, sử dụng chức năng do_shortcode('[my-shortcode-handle]'). Mã vạch của bạn cần phải được đăng ký như bình thường (see WordPress codex on shortcode API) trước khi bạn có thể sử dụng mã này trong mẫu. Bất kỳ thuộc tính nào, bên trong nội dung, v.v. cũng phải ở trong đó.

echo do_shortcode('[my-shortcode foo="bar"]Shortcode content[/my-shortcode]'); 

Ngoài ra, hãy nhớ lặp lại (hoặc ít nhất gán cho biến), vì nó chỉ trả về đầu ra của shortcode.

2

Từ: http://codex.wordpress.org/Plugin_API

Móc được cung cấp bởi WordPress cho phép plugin của bạn để 'móc vào' phần còn lại của WordPress; tức là, để gọi các hàm trong plugin của bạn vào những thời điểm cụ thể và do đó đặt plugin của bạn đang chuyển động. Có hai loại móc:

  1. Hành động: Các móc mà lõi WordPress khởi chạy tại các điểm cụ thể trong khi thực thi hoặc khi các sự kiện cụ thể xảy ra. Plugin của bạn có thể chỉ định rằng một hoặc nhiều hàm PHP của nó được thực hiện tại các điểm này, bằng cách sử dụng API hành động.
  2. Bộ lọc: Bộ lọc là các móc mà WordPress khởi chạy để sửa đổi văn bản của các loại khác nhau trước khi thêm nó vào cơ sở dữ liệu hoặc gửi nó tới màn hình trình duyệt. Plugin của bạn có thể chỉ định rằng một hoặc nhiều hàm PHP của nó được thực hiện để sửa đổi các loại văn bản cụ thể vào những thời điểm này, bằng cách sử dụng API bộ lọc.

    Actions

Hoạt động được kích hoạt bởi các sự kiện cụ thể diễn ra trong WordPress, chẳng hạn như xuất bản một bài đăng, thay đổi chủ đề, hoặc hiển thị một trang của bảng điều khiển quản trị. plugin của bạn có thể đáp ứng sự kiện này bằng cách thực hiện một chức năng PHP, mà có thể làm một hoặc nhiều điều sau đây:

* Modify database data 
* Send an email message 
* Modify what is displayed in the browser screen (admin or end-user) 

Các bước cơ bản để làm cho điều này xảy ra (mô tả chi tiết dưới đây) là:

  1. Tạo chức năng PHP sẽ thực thi khi sự kiện xảy ra, trong tệp plugin của bạn.
  2. Hook vào hành động trong WordPress, bằng cách gọi add_action()
  3. Đặt hàm PHP của bạn vào tệp plugin và kích hoạt nó.

VÍ DỤ:

function email_friends($post_ID) { 
    $friends = '[email protected],[email protected]'; 
    mail($friends, "sally's blog updated", 
     'I just put something on my blog: http://blog.example.com'); 
    return $post_ID; 
} 

Hook để WordPress

Sau khi chức năng của bạn được xác định, bước tiếp theo là để "móc" hoặc đăng ký nó với WordPress. Để làm điều này, hãy gọi add_action() trong không gian thi công toàn cầu của tập tin plugin của bạn:

add_action ('hook_name', 'your_function_name', [priority], [accepted_args]); 

nơi:

hook_name Tên của một móc hành động được cung cấp bởi WordPress, mà nói với những gì sự kiện chức năng của bạn nên được liên kết với. your_function_name Tên của hàm mà bạn muốn được thực hiện sau sự kiện được chỉ định bởi hook_name.Đây có thể là một hàm php chuẩn, một hàm có trong lõi WordPress, hoặc một hàm được định nghĩa bởi bạn trong tệp plugin (chẳng hạn như 'email_friends' được định nghĩa ở trên). priority Đối số nguyên tùy chọn có thể được sử dụng để chỉ định thứ tự mà các hàm liên kết với một hành động cụ thể được thực hiện (mặc định: 10). Số thấp hơn tương ứng với việc thực thi trước đó và các hàm có cùng mức độ ưu tiên được thực thi theo thứ tự mà chúng được thêm vào hành động. accepted_args Đối số nguyên tùy chọn xác định số lượng đối số mà hàm của bạn có thể chấp nhận (mặc định 1), hữu ích vì một số móc có thể vượt qua nhiều đối số cho hàm của bạn. Tham số này là mới trong bản phát hành 1.5.1.

Trong ví dụ trên, chúng ta sẽ đặt dòng sau trong file plugin:

add_action ('publish_post', 'email_friends'); 
+0

Tôi biết về móc. Nhưng ở đây thre là không có kích hoạt. Tôi chỉ lấy dữ liệu từ một bảng DB khi tôi tải một mẫu cụ thể. Vì vậy, tôi nghĩ rằng Johns bắt đầu sử dụng 'do_shortcode ('shortcode-handle')' là cách tốt nhất để đi. – Steven

Các vấn đề liên quan