📜  wordpress 以编程方式添加新帖子 - PHP (1)

📅  最后修改于: 2023-12-03 15:35:43.647000             🧑  作者: Mango

WordPress 以编程方式添加新帖子 - PHP

如果您是一名编程人员,想要在 WordPress 中添加新的文章,那么这篇文章将为您提供一个完整的解决方案。

准备

首先,在您的 WordPress 站点上,您需要创建一个新的用户并分配「管理员」权限。然后,在您的 WordPress 中,安装和激活 WP REST API 插件。这使得我们可以使用 REST API 来从外部应用程序添加新文章。

编写 PHP 脚本
  1. 我们需要使用 WordPress 提供的 wp_remote_post 函数向站点发送一个 POST 请求,以获取访问令牌:

    $url = 'https://example.com/wp-json/jwt-auth/v1/token';
    $response = wp_remote_post( $url, array(
        'method' => 'POST',
        'headers' => array(
            'Content-Type' => 'application/json',
        ),
        'body' => json_encode(
            array(
                'username' => 'admin',
                'password' => 'yourpassword',
            )
        ),
    ) );
    if ( is_wp_error( $response ) ) {
        // handle error
    } else {
        $data = json_decode( $response['body'] );
        $access_token = $data->token;
    }
    

    这将返回一个 JSON 响应,其中包含一个称为「access_token」的令牌,您需要将其存储为变量以供稍后使用。

  2. 接下来,我们需要再次使用 WordPress 提供的 wp_remote_post 函数,以创建一个包含新文章信息的 POST 请求:

    $url = 'https://example.com/wp-json/wp/v2/posts';
    $response = wp_remote_post( $url, array(
        'method' => 'POST',
        'headers' => array(
            'Authorization' => 'Bearer ' . $access_token,
            'Content-Type' => 'application/json',
        ),
        'body' => json_encode(
            array(
                'title' => 'New post',
                'content' => 'This is the content of the new post.',
                'status' => 'publish',
            )
        ),
    ) );
    if ( is_wp_error( $response ) ) {
        // handle error
    } else {
        $data = json_decode( $response['body'] );
        $post_id = $data->id;
    }
    

    这将创建一个新的 POST 请求,并将新文章的标题、内容和状态设置为「publish」。新文章的 ID 将作为响应的一部分返回,并且您需要将其存储为变量以供稍后使用。

  3. 最后,我们使用 wp_remote_request 函数向 WordPress 发送一个 GET 请求来检查新文章是否成功创建:

    $url = 'https://example.com/wp-json/wp/v2/posts/' . $post_id;
    $response = wp_remote_request( $url, array(
        'method' => 'GET',
    ) );
    if ( is_wp_error( $response ) ) {
        // handle error
    } else {
        $data = json_decode( $response['body'] );
        if ( $data->title->raw == 'New post' ) {
            echo 'New post created!';
        } else {
            echo 'Error creating new post.';
        }
    }
    

    这将检查新文章是否已成功创建,并根据检查结果返回相关信息。

完整的 PHP 脚本如下所示:

<?php

// Get access token
$url = 'https://example.com/wp-json/jwt-auth/v1/token';
$response = wp_remote_post( $url, array(
    'method' => 'POST',
    'headers' => array(
        'Content-Type' => 'application/json',
    ),
    'body' => json_encode(
        array(
            'username' => 'admin',
            'password' => 'yourpassword',
        )
    ),
) );
if ( is_wp_error( $response ) ) {
    // handle error
} else {
    $data = json_decode( $response['body'] );
    $access_token = $data->token;
}

// Create new post
$url = 'https://example.com/wp-json/wp/v2/posts';
$response = wp_remote_post( $url, array(
    'method' => 'POST',
    'headers' => array(
        'Authorization' => 'Bearer ' . $access_token,
        'Content-Type' => 'application/json',
    ),
    'body' => json_encode(
        array(
            'title' => 'New post',
            'content' => 'This is the content of the new post.',
            'status' => 'publish',
        )
    ),
) );
if ( is_wp_error( $response ) ) {
    // handle error
} else {
    $data = json_decode( $response['body'] );
    $post_id = $data->id;
}

// Check if new post created successfully
$url = 'https://example.com/wp-json/wp/v2/posts/' . $post_id;
$response = wp_remote_request( $url, array(
    'method' => 'GET',
) );
if ( is_wp_error( $response ) ) {
    // handle error
} else {
    $data = json_decode( $response['body'] );
    if ( $data->title->raw == 'New post' ) {
        echo 'New post created!';
    } else {
        echo 'Error creating new post.';
    }
}

结论

通过使用上述代码片段,您可以使用 PHP 编写程序来从外部应用程序中向 WordPress 添加新文章,这将为您和您的客户端带来便利和效率。如果您需要证明您的 WordPress 站点是安全的,请务必考虑加强您的安全措施以保护您的站点和用户。