Wordpress API sử dụng với Python để up bài viết

Discussion in 'Hỏi Đáp Kỹ Thuật' started by Le Hieu, Oct 28, 2019.

  1. Le Hieu

    Le Hieu Sơ Nhập Giang Hồ

    Em định viết cái tool sử dụng python để auto up bài lên Wordpress mà tìm hiểu cái Wordpress REST API mà cứ bị lỗi cái xác thực {cry} không biết làm sao để qua được bước xác thực vậy ạ?
    Em cảm ơn
     
  2. Hoa Mãn Lâu

    Hoa Mãn Lâu Trưởng Môn

    xài php dễ hơn đó thớt, hoặc làm 1 file tạm php để insert post
     
  3. Dang

    Dang Bang Chúng

    Bạn đang dùng wp ver mấy? Và thử kiểm tra theme hoặc plugin có disabled REST API không!
     
    Le Hieu likes this.
  4. Le Hieu

    Le Hieu Sơ Nhập Giang Hồ

    Mình đang dùng bản mới nhất 5.2.4 và theme mặc định. Không biết cái REST API đấy kiểm tra ơn đâu vậy bác?
     
  5. Le Hieu

    Le Hieu Sơ Nhập Giang Hồ

    Tại cái phần tạo Post và tag e dùng Python code nên muốn sử dụng để up luôn {haha}
     
  6. Dang

    Dang Bang Chúng

    Bạn @Le Hieu gửi chi tiết lỗi lên để mình tham khảo thử!
     
  7. Dang

    Dang Bang Chúng

    @Le Hieu thử add đoạn bên dưới vào functions.php của theme hiện tại nhé!

    PHP:
    /**
    * Plugin Name: JSON Basic Authentication
    * Description: Basic Authentication handler for the JSON API, used for development and debugging purposes
    * Author: WordPress API Team
    * Author URI: https://github.com/WP-API
    * Version: 0.1
    * Plugin URI: https://github.com/WP-API/Basic-Auth
    */
    function json_basic_auth_handler($user)
    {

        global 
    $wp_json_basic_auth_error;

        
    $wp_json_basic_auth_error null;

        
    // Don't authenticate twice
        
    if (!empty($user))
        {
            return 
    $user;
        }

        
    // Check that we're trying to authenticate
        
    if (!isset($_SERVER['PHP_AUTH_USER']))
        {
            return 
    $user;
        }

        
    $username $_SERVER['PHP_AUTH_USER'];

        
    $password $_SERVER['PHP_AUTH_PW'];

        
    /**
         * In multi-site, wp_authenticate_spam_check filter is run on authentication. This filter calls
         * get_currentuserinfo which in turn calls the determine_current_user filter. This leads to infinite
         * recursion and a stack overflow unless the current function is removed from the determine_current_user
         * filter during authentication.
         */
        
    remove_filter('determine_current_user''json_basic_auth_handler'20);

        
    $user wp_authenticate($username$password);

        
    add_filter('determine_current_user''json_basic_auth_handler'20);

        if (
    is_wp_error($user))
        {
            
    $wp_json_basic_auth_error $user;
            return 
    null;
        }

        
    $wp_json_basic_auth_error true;

        return 
    $user->ID;

    }



    /**
    */
    function json_basic_auth_error($error)
    {

        
    // Passthrough other errors
        
    if (!empty($error))
        {
            return 
    $error;
        }

        global 
    $wp_json_basic_auth_error;

        return 
    $wp_json_basic_auth_error;

    }

    add_filter('determine_current_user''json_basic_auth_handler'20);

    add_filter('rest_authentication_errors''json_basic_auth_error');
     
    Ch3st3r, catd3vjl, hocauo40 and 2 others like this.
  8. Le Hieu

    Le Hieu Sơ Nhập Giang Hồ

    Thực sự cảm ơn {beauty}{beauty} sau khi thêm vào thì code của e đang hoạt động và đang bắn bài lên r ạ {lovemachine}{lovemachine}