Các plugin ưa thích đã được thêm vào API WordPress.org. Có một tính năng mới trong 3.5 cho phép bạn truy cập vào mục yêu thích của mình từ trình cài đặt plugin.
Xem http://core.trac.wordpress.org/ticket/22002 để biết thông tin về cách sử dụng nó trong lõi.
API cho phép bạn truy xuất một đối tượng có chứa từng plugin
- Tên
- sự miêu tả
- tác giả
- Xếp hạng
- ngày cập nhật mới nhất
- thay đổi nhật ký
- phiên bản ổn định
- hoạt động với phiên bản wp
Để lấy lại đối tượng
Gọi cho http://api.wordpress.org/plugins/info/1.0/ bằng cách sử dụng wp_remote_post chuyển một mảng các đối số bao gồm hành động sẽ là 'query_plugins' và tên người dùng wp dot org để lấy các mục yêu thích từ đó.
$request = wp_remote_post('http://api.wordpress.org/plugins/info/1.0/', array( 'timeout' => 15, 'body' => array('action' => $action, 'request' => serialize($args))) );
Trước khi bạn có một đối tượng sạch đẹp, bạn cần thực hiện một số xử lý lỗi và phân tích cú pháp khác. Dưới đây là một chức năng ví dụ sẽ trả về một đối tượng sạch đẹp chứa tất cả các chi tiết plugin.
function api( $action, $args ) {
if ( is_array( $args ) )
$args = (object) $args;
$request = wp_remote_post('http://api.wordpress.org/plugins/info/1.0/', array( 'timeout' => 15, 'body' => array('action' => $action, 'request' => serialize($args))) );
if ( is_wp_error($request) ) {
$res = new WP_Error('plugins_api_failed', __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the <a href="http://wordpress.org/support/">support forums</a>.' ), $request->get_error_message() );
} else {
$res = maybe_unserialize( wp_remote_retrieve_body( $request ) );
if ( ! is_object( $res ) && ! is_array( $res ) )
$res = new WP_Error('plugins_api_failed', __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the <a href="http://wordpress.org/support/">support forums</a>.' ), wp_remote_retrieve_body( $request ) );
}
return apply_filters( 'c3m_favorite_results', $res, $action, $args );
}
Sử dụng
Việc sử dụng ví dụ này sẽ cung cấp cho bạn một danh sách các plugin yêu thích không có thứ tự cùng với liên kết đến plugin trên dot org, liên kết đến uri của tác giả và xếp hạng sao.
$api_data = api( 'query_plugins', array( 'user' => 'my_dot_org_username' ) );
$api_plugins = $api_data->plugins;
echo '<ul class="c3m-favorites">';
foreach( $api_plugins as $plugin ) {
$name = $plugin->name; ?>
<li><strong><a target="_blank" href="http://wordpress.org/extend/plugins/<?php echo $plugin->slug ?>/"><?php echo esc_html( $name ); ?></a></strong><br>
<div class="star-holder" title="<?php printf( _n( '(based on %s rating)', '(based on %s ratings)', $plugin->num_ratings ), number_format_i18n( $plugin->num_ratings ) ); ?>">
<div class="star star-rating" style="width: <?php echo esc_attr( str_replace( ',', '.', $plugin->rating ) ); ?>px"></div></div>
<em><?php _e('By: ') ?></em> <?php echo links_add_target( $plugin->author, '_blank' ). '<br>'; ?>
</li><?php
}
echo '</ul>';
Kết quả
Ảnh chụp màn hình widget từ plugin Plugin yêu thích của tôi:
http://wordpress.org/extend/plugins/favorite-plugins-widget/