Đây là một plugin WordPress đơn giản để tạo shortcode để hiển thị các dữ liệu quan trọng từ BuddyPress. Plugin này sẽ cho phép bạn chèn các thông tin thành viên, nhóm hoặc hoạt động vào bất kỳ đâu trên website bằng shortcode.
Cách cài đặt Plugin Shortcode cho Buddy Press WordPress
- Tạo file PHP với nội dung trên (ví dụ:
bp-data-shortcodes.php
) theo code bên dưới. - Nén thành file zip hoặc upload trực tiếp vào thư mục
/wp-content/plugins/
- Kích hoạt plugin trong khu vực quản trị WordPress
<?php /* Plugin Name: BuddyPress Data Shortcodes with Links Description: Tạo shortcode để hiển thị dữ liệu BuddyPress quan trọng, bao gồm avatar, liên kết profile, nhóm và các liên kết liên quan Version: 1.2 Author: Your Name */ if (!defined('ABSPATH')) {</p> <pre><code>exit; // Thoát nếu truy cập trực tiếp</code></pre> <p>} class BP_Data_Shortcodes_With_Links {</p> <pre><code>public function __construct() { // Đăng ký các shortcode add_shortcode('bp_member_data', array($this, 'member_data_shortcode')); add_shortcode('bp_group_data', array($this, 'group_data_shortcode')); add_shortcode('bp_activity_data', array($this, 'activity_data_shortcode')); // Thêm trang hướng dẫn trong quản trị plugin add_action('admin_menu', array($this, 'add_plugin_instructions_page')); } /** * Shortcode hiển thị thông tin thành viên */ public function member_data_shortcode($atts) { if (!function_exists('buddypress')) { return 'BuddyPress chưa được kích hoạt'; } $atts = shortcode_atts(array( 'user_id' => bp_loggedin_user_id(), 'field' => 'display_name', // Các trường khác: user_email, user_url, etc. 'xprofile' => '', // ID trường xProfile nếu muốn 'avatar' => 'false', // Hiển thị avatar 'avatar_size' => '50', // Kích thước avatar 'link' => 'true' // Hiển thị liên kết đến profile ), $atts); $user_id = $atts['user_id']; $output = ''; if ($atts['avatar'] === 'true') { $output .= '<div class="bp-member-avatar">' . bp_core_fetch_avatar(array( 'item_id' => $user_id, 'type' => 'thumb', 'width' => $atts['avatar_size'], 'height' => $atts['avatar_size'] )) . '</div>'; } $user_data = ''; if (empty($atts['xprofile'])) { $user = get_userdata($user_id); $user_data = isset($user->{$atts['field']}) ? $user->{$atts['field']} : ''; } else { $user_data = bp_get_profile_field_data(array( 'field' => $atts['xprofile'], 'user_id' => $user_id )); } if ($atts['link'] === 'true') { $output .= '<a href="' . bp_core_get_user_domain($user_id) . '">' . $user_data . '</a>'; } else { $output .= $user_data; } return $output; } /** * Shortcode hiển thị thông tin nhóm */ public function group_data_shortcode($atts) { if (!bp_is_active('groups')) { return 'Tính năng nhóm BuddyPress chưa được kích hoạt'; } $atts = shortcode_atts(array( 'group_id' => '', 'field' => 'name', // Các trường khác: description, slug, total_member_count 'avatar' => 'false', // Hiển thị avatar 'avatar_size' => '50', // Kích thước avatar 'link' => 'true' // Hiển thị liên kết đến nhóm ), $atts); if (empty($atts['group_id'])) { return 'Vui lòng cung cấp ID nhóm'; } $group = groups_get_group($atts['group_id']); $output = ''; if ($atts['avatar'] === 'true') { $output .= '<div class="bp-group-avatar">' . bp_core_fetch_avatar(array( 'item_id' => $atts['group_id'], 'object' => 'group', 'type' => 'thumb', 'width' => $atts['avatar_size'], 'height' => $atts['avatar_size'] )) . '</div>'; } $group_data = isset($group->{$atts['field']}) ? $group->{$atts['field']} : ''; if ($atts['link'] === 'true') { $output .= '<a href="' . bp_get_group_permalink($group) . '">' . $group_data . '</a>'; } else { $output .= $group_data; } return $output; } /** * Shortcode hiển thị hoạt động */ public function activity_data_shortcode($atts) { if (!bp_is_active('activity')) { return 'Tính năng hoạt động BuddyPress chưa được kích hoạt'; } $atts = shortcode_atts(array( 'count' => 5, 'type' => 'activity_update', 'user_id' => '', 'link' => 'true' // Hiển thị liên kết đến hoạt động ), $atts); $args = array( 'per_page' => $atts['count'], 'action' => $atts['type'], 'user_id' => $atts['user_id'] ); if (bp_has_activities($args)) { ob_start(); echo '<ul class="bp-activity-shortcode">'; while (bp_activities()) : bp_the_activity(); echo '<li>'; if ($atts['link'] === 'true') { echo '<a href="' . bp_get_activity_thread_permalink() . '">' . bp_get_activity_action() . '</a>'; } else { echo bp_get_activity_action(); } echo '<div class="activity-content">' . bp_get_activity_content_body() . '</div>'; echo '</li>'; endwhile; echo '</ul>'; return ob_get_clean(); } return 'Không có hoạt động nào'; } /** * Thêm trang hướng dẫn trong quản trị plugin */ public function add_plugin_instructions_page() { add_submenu_page( 'plugins.php', 'Hướng dẫn sử dụng BuddyPress Data Shortcodes', 'BP Shortcodes Guide', 'manage_options', 'bp-shortcodes-guide', array($this, 'render_instructions_page') ); } /** * Hiển thị nội dung trang hướng dẫn */ public function render_instructions_page() { echo '<div class="wrap">'; echo '<h1>Hướng dẫn sử dụng BuddyPress Data Shortcodes</h1>'; echo '<p>Dưới đây là các shortcode có sẵn và cách sử dụng:</p>'; echo '<h2>1. Shortcode thành viên</h2>'; echo '<p><code>[bp_member_data field="display_name" avatar="true" avatar_size="50" link="true"]</code></p>'; echo '<p>Hiển thị tên hiển thị, avatar và liên kết đến profile của thành viên đang đăng nhập.</p>'; echo '<p><code>[bp_member_data user_id="123" field="user_email" avatar="true" link="true"]</code></p>'; echo '<p>avatar và liên kết đến profile của thành viên có ID 123.</p>'; echo '<p><code>[bp_member_data xprofile="2" avatar="true" link="true"]</code></p>'; echo '<p>Hiển thị dữ liệu từ trường xProfile có ID là 2, avatar và liên kết đến profile.</p>'; echo '<h2>2. Shortcode nhóm</h2>'; echo '<p><code>[bp_group_data group_id="5" field="name" avatar="true" avatar_size="50" link="true"]</code></p>'; echo '<p>Hiển thị tên, avatar và liên kết đến nhóm có ID 5.</p>'; echo '<p><code>[bp_group_data group_id="5" field="total_member_count" avatar="true" link="true"]</code></p>'; echo '<p>Hiển thị số lượng thành viên, avatar và liên kết đến nhóm.</p>'; echo '<h2>3. Shortcode hoạt động</h2>'; echo '<p><code>[bp_activity_data count="3" link="true"]</code></p>'; echo '<p>Hiển thị 3 hoạt động mới nhất với liên kết đến từng hoạt động.</p>'; echo '<p><code>[bp_activity_data type="activity_update" count="5" link="true"]</code></p>'; echo '<p>Hiển thị 5 bản cập nhật trạng thái với liên kết đến từng hoạt động.</p>'; echo '</div>'; }</code></pre> <p>} new BP_Data_Shortcodes_With_Links();
Cách sử dụng Shortcode Buddy Press
Shortcode thành viên: [bp_member_data field="display_name" avatar="true" avatar_size="50" link="true"]: Hiển thị tên hiển thị, avatar và liên kết đến profile của thành viên đang đăng nhập. [bp_member_data user_id="123" field="user_email" avatar="true" link="true"]: Hiển thị email, avatar và liên kết đến profile của thành viên có ID 123. [bp_member_data xprofile="2" avatar="true" link="true"]: Hiển thị dữ liệu từ trường xProfile có ID là 2, avatar và liên kết đến profile. Shortcode nhóm: [bp_group_data group_id="5" field="name" avatar="true" avatar_size="50" link="true"]: Hiển thị tên, avatar và liên kết đến nhóm có ID 5. [bp_group_data group_id="5" field="total_member_count" avatar="true" link="true"]: Hiển thị số lượng thành viên, avatar và liên kết đến nhóm. Shortcode hoạt động: [bp_activity_data count="3" link="true"]: Hiển thị 3 hoạt động mới nhất với liên kết đến từng hoạt động. [bp_activity_data type="activity_update" count="5" link="true"]: Hiển thị 5 bản cập nhật trạng thái với liên kết đến từng hoạt động.
Hướng dẫn trong quản trị
Sau khi cài đặt plugin, bạn có thể truy cập trang hướng dẫn bằng cách điều hướng đến Plugins > BP Shortcodes Guide trong khu vực quản trị WordPress. Tại đây, bạn sẽ tìm thấy các ví dụ và cách sử dụng chi tiết cho từng shortcode.
