Lấy tin từ trang khác bằng fetch feed

Cập nhật lần cuối vào

WordPress có hàm cho phép bạn lấy tin từ bất kỳ trang web nào có hỗ trợ RSS Feed, đây là tính năng rất hay, bạn có thể sử dụng để tạo các widget hiển thị bài viết từ trang yêu thích.

Lấy tin từ blog khác WordPress

Hàm này của WordPress được dựa trên SimplePie, do vậy bạn hoàn toàn có thể sử dụng được cho các trang web không phải là WordPress. Nhưng nếu bạn đang dùng WordPress thì áp dụng theo nội dung bài viết này.

Xem thêm: fetch_feed

Trên trang Codex của WordPress thì đã có hướng dẫn đầy đủ, rõ ràng. Bạn chỉ cần theo đường link mình gửi phía trên để xem cách sử dụng, trong trường hợp của mình thì mình viết thành 2 hàm như sau:

function hocwp_fetch_feed($args = array()) {
    $number = absint(hocwp_get_value_by_key($args, 'number', 5));
    $offset = hocwp_get_value_by_key($args, 'offset', 0);
    $url = hocwp_get_value_by_key($args, 'url');
    if(empty($url)) {
        return '';
    }
    $expiration = hocwp_get_value_by_key($args, 'expiration', HOUR_IN_SECONDS);
    $transient_name = 'hocwp_fetch_feed_' . md5($url);
    if(false === ($result = get_transient($transient_name))) {
        if(!function_exists('fetch_feed')) {
            include_once(ABSPATH . WPINC . '/feed.php');
        }
        $result = '';
        $rss = fetch_feed($url);
        if(!is_wp_error($rss)) {
            $max = $rss->get_item_quantity($number);
            $result = $rss->get_items($offset, $max);
            set_transient($transient_name, $result, $expiration);
        }
    }
    return $result;
}

function hocwp_get_feed_items($args = array()) {
    $result = array();
    $items = hocwp_fetch_feed($args);
    if(hocwp_array_has_value($items)) {
        foreach($items as $item) {
            if(!hocwp_object_valid($item)) {
                continue;
            }
            $description = $item->get_description();
            $thumbnail = hocwp_get_first_image_source($description);
            $description = wp_strip_all_tags($description);
            $content = $item->get_content();
            if(empty($thumbnail)) {
                $thumbnail = hocwp_get_first_image_source($content);
            }
            $value = array(
                'permalink' => $item->get_permalink(),
                'title' => $item->get_title(),
                'date' => $item->get_date(),
                'image_url' => $thumbnail,
                'description' => $description,
                'content' => $content
            );
            array_push($result, $value);
        }
    }
    return $result;
}

Nội dung của hàm này chỉ mang tính chất tham khảo, nếu bạn không thích viết lại theo cách của mình thì có thể áp dụng như WordPress đã hướng dẫn. Bây giờ bạn chỉ cần gọi hàm và điền url của nguồn tin muốn lấy, sau đó chạy vòng lặp và xuất ra bên ngoài trang web. Chúc bạn thành công.