Tu dong dang bai facebook bang wordpress

 Dưới đây là mã plugin được cập nhật để tự động đăng bài lên Facebook với tính năng tùy chỉnh nội dung bài đăng. Trong ví dụ này, khi một bài đăng mới được xuất bản, plugin sẽ lấy tiêu đề, trích dẫn (excerpt) và ảnh đại diện (featured image) nếu có, sau đó ghép lại thông tin này để gửi lên Facebook.

Bạn hãy tạo file auto-facebook-poster.php trong thư mục wp-content/plugins của website và sao chép mã sau vào file đó:


php
<?php /* Plugin Name: Auto Facebook Poster with Custom Content Description: Tự động đăng bài từ WordPress lên Facebook với nội dung tùy chỉnh (tiêu đề, trích dẫn và ảnh đại diện). Version: 1.1 Author: Tên của bạn License: GPL2 */ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } class Auto_Facebook_Poster_Custom { public function __construct() { // Thêm trang cài đặt trong Admin add_action( 'admin_menu', array( $this, 'afp_add_admin_menu' ) ); add_action( 'admin_init', array( $this, 'afp_settings_init' ) ); // Hook đăng bài mới add_action( 'publish_post', array( $this, 'afp_publish_to_facebook' ), 10, 2 ); } /*---------------------------------------- ADMIN SETTINGS ----------------------------------------*/ public function afp_add_admin_menu() { add_options_page( 'Auto Facebook Poster Settings', 'Auto Facebook Poster', 'manage_options', 'auto_facebook_poster_custom', array( $this, 'afp_options_page' ) ); } public function afp_settings_init() { register_setting( 'afp_pluginPage', 'afp_settings' ); add_settings_section( 'afp_pluginPage_section', __('Cài đặt Facebook', 'auto-facebook-poster'), array( $this, 'afp_settings_section_callback' ), 'afp_pluginPage' ); add_settings_field( 'afp_app_id', __('Facebook App ID', 'auto-facebook-poster'), array( $this, 'afp_app_id_render' ), 'afp_pluginPage', 'afp_pluginPage_section' ); add_settings_field( 'afp_app_secret', __('Facebook App Secret', 'auto-facebook-poster'), array( $this, 'afp_app_secret_render' ), 'afp_pluginPage', 'afp_pluginPage_section' ); add_settings_field( 'afp_page_access_token', __('Facebook Page Access Token', 'auto-facebook-poster'), array( $this, 'afp_page_access_token_render' ), 'afp_pluginPage', 'afp_pluginPage_section' ); add_settings_field( 'afp_page_id', __('Facebook Page ID', 'auto-facebook-poster'), array( $this, 'afp_page_id_render' ), 'afp_pluginPage', 'afp_pluginPage_section' ); } public function afp_app_id_render() { $options = get_option( 'afp_settings' ); ?> <input type='text' name='afp_settings[afp_app_id]' value='<?php echo isset( $options['afp_app_id'] ) ? esc_attr( $options['afp_app_id'] ) : ''; ?>' size="50"> <?php } public function afp_app_secret_render() { $options = get_option( 'afp_settings' ); ?> <input type='text' name='afp_settings[afp_app_secret]' value='<?php echo isset( $options['afp_app_secret'] ) ? esc_attr( $options['afp_app_secret'] ) : ''; ?>' size="50"> <?php } public function afp_page_access_token_render() { $options = get_option( 'afp_settings' ); ?> <input type='text' name='afp_settings[afp_page_access_token]' value='<?php echo isset( $options['afp_page_access_token'] ) ? esc_attr( $options['afp_page_access_token'] ) : ''; ?>' size="50"> <?php } public function afp_page_id_render() { $options = get_option( 'afp_settings' ); ?> <input type='text' name='afp_settings[afp_page_id]' value='<?php echo isset( $options['afp_page_id'] ) ? esc_attr( $options['afp_page_id'] ) : ''; ?>'> <?php } public function afp_settings_section_callback() { echo __('Nhập thông tin ứng dụng Facebook của bạn. Tạo ứng dụng tại <a href="https://developers.facebook.com/" target="_blank">Facebook Developers</a> và lấy các thông số sau:', 'auto-facebook-poster'); } public function afp_options_page() { ?> <div class="wrap"> <h1>Auto Facebook Poster Settings</h1> <form action='options.php' method='post'> <?php settings_fields( 'afp_pluginPage' ); do_settings_sections( 'afp_pluginPage' ); submit_button(); ?> </form> <p><strong>Lưu ý:</strong> Sau khi cu hình, đảm bong dng Facebook ca bn được bt chế độ công khai (Live) để plugin có thể đăng bài lên Facebook.</p> </div> <?php } /*---------------------------------------- POSTING TO FACEBOOK WITH CUSTOM CONTENT ----------------------------------------*/ public function afp_publish_to_facebook( $post_ID, $post ) { // Chỉ xử lý nếu bài đăng ở trạng thái publish if ( $post->post_status !== 'publish' ) { return; } // Lấy các thiết lập từ admin $options = get_option( 'afp_settings' ); if ( empty( $options['afp_page_access_token'] ) || empty( $options['afp_page_id'] ) ) { // Nếu chưa cấu hình xong, không thực hiện đăng bài return; } // Lấy thông tin bài đăng $post_title = $post->post_title; $post_url = get_permalink( $post_ID ); // Lấy trích dẫn (excerpt). Nếu không có, tự tạo từ nội dung bài viết. $post_excerpt = $post->post_excerpt; if ( empty( $post_excerpt ) ) { $post_excerpt = wp_trim_words( $post->post_content, 40, '...' ); } // Lấy URL ảnh đại diện (nếu có) $featured_image = get_the_post_thumbnail_url( $post_ID, 'full' ); // Tùy chỉnh nội dung bài đăng: ghép tiêu đề, trích dẫn và link $message = $post_title . "\n\n" . $post_excerpt . "\n\nXem thêm: " . $post_url; // URL API của Facebook $page_id = $options['afp_page_id']; $access_token = $options['afp_page_access_token']; $fb_api_url = "https://graph.facebook.com/{$page_id}/feed"; // Chuẩn bị tham số gửi tới API $body = array( 'message' => $message, 'link' => $post_url, 'access_token' => $access_token, ); // Nếu có ảnh đại diện, thêm vào tham số (tham số 'picture' giúp hiển thị ảnh khi đăng link) if ( $featured_image ) { $body['picture'] = $featured_image; } // Gửi yêu cầu POST đến Facebook Graph API $args = array( 'body' => $body, 'timeout' => 15, 'redirection' => 5, 'blocking' => true, 'headers' => array(), 'cookies' => array(), ); $response = wp_remote_post( $fb_api_url, $args ); // Xử lý kết quả trả về if ( is_wp_error( $response ) ) { error_log( '[Auto Facebook Poster] Error: ' . $response->get_error_message() ); } else { $response_body = wp_remote_retrieve_body( $response ); error_log( '[Auto Facebook Poster] Response: ' . $response_body ); } } } new Auto_Facebook_Poster_Custom();

Hướng dẫn sử dụng

  1. Tạo file plugin:

    • Tạo file auto-facebook-poster.php và sao chép mã trên vào file đó.
  2. Upload và kích hoạt:

    • Đưa file vào thư mục wp-content/plugins.
    • Vào Admin > Plugins và kích hoạt “Auto Facebook Poster with Custom Content”.
  3. Cấu hình plugin:

    • Vào Cài đặt > Auto Facebook Poster.
    • Nhập các thông số:
      • Facebook App IDApp Secret (lấy từ Facebook Developers).
      • Facebook Page Access Token (token của trang Fanpage bạn muốn đăng bài).
      • Facebook Page ID (ID của Fanpage, có thể lấy từ công cụ như Find My FB ID).
    • Lưu lại cấu hình.
  4. Kiểm tra:

    • Khi bạn đăng bài mới trên WordPress, plugin sẽ tự động gửi bài đăng với nội dung bao gồm tiêu đề, trích dẫn và link bài viết, đồng thời sử dụng ảnh đại diện nếu có, lên Facebook.
    • Kiểm tra file log (nếu bật DEBUG) để xem kết quả trả về từ Facebook API.

Lưu ý

  • Mã này chỉ là ví dụ mẫu cơ bản. Trong thực tế, bạn nên bổ sung kiểm tra lỗi, xử lý làm mới token khi cần, bảo mật thông tin và tùy chỉnh thêm nội dung theo yêu cầu của bạn.
  • Đảm bảo ứng dụng Facebook của bạn có các quyền cần thiết như pages_manage_posts để có thể đăng bài thành công.

Hy vọng mã code này sẽ giúp bạn bắt đầu phát triển plugin với tính năng tùy chỉnh nội dung bài đăng. Nếu cần hỗ trợ thêm, hãy tham khảo tài liệu Facebook Graph APIWordPress Plugin Handbook.

Comments

Popular posts from this blog

The World at a Crossroads: Donald Trump’s Presidency and Its Global Impact

Cho tam giác ABC vuông tại A có AB < AC. Vẽ AH vuông góc với BC ( H thuộc BC), D là điểm trên cạnh AC sao cho AD=AB. Vẽ DE vuông góc với BC( E thuộc BC). Chứng minh rằng : HA=HE.

Cho tam giác ABC vuông ở B, kéo dài AC về phía C một đoạn CD=AB=1, góc CBD=30 độ. Tính AC.