一号优惠经验分享网
51福利网的各种薅羊毛福利经验笔记

wordpress怎么插入api文章(php代码版)

将文章插入 WordPress 网站,主要介绍两种方式:后台手动插入使用 REST API 自动插入,手动插入就是自己网站后台编辑文章,今天讲一下用api自动插入文章方法(php代码版)。

使用 REST API 自动插入原理

51福利网

如果需要通过代码(比如 Python、PHP、JavaScript 等)批量插入文章,或者在其他系统(如小程序、APP、自建 CMS)中同步文章到 WordPress,就需要用到 WordPress 自带的 REST API(无需额外安装插件,WordPress 4.7+ 版本默认开启)。

核心前提:获取 API 认证凭证

REST API 插入文章需要身份验证(避免匿名提交),推荐使用「应用密码」(WordPress 5.6+ 支持,最简便):

步骤 1:开启 WordPress REST API

默认已开启,可通过访问 你的域名/wp-json/ 验证,若返回 JSON 格式数据,说明 API 正常。

步骤 2:获取管理员账号和应用密码

  1. 后台登录管理员账号(需有「发布文章」权限);
  2. 进入「用户」→ 点击当前管理员用户名;
  3. 拉到「应用密码」 section,输入一个名称(如「API 插入文章」),点击「添加新应用密码」;
  4. 生成后会显示一串密码(如 abcd 1234 efgh 5678 ijkl 9012),务必复制保存(仅显示一次,丢失需重新生成)。

三、API 插入文章的核心说明

1. API 端点(Endpoint)

插入文章的 API 地址:POST https://你的域名/wp-json/wp/v2/posts

2. 请求头(Headers)

必须包含认证信息和数据格式:

http

Authorization: Basic base64编码后的账号:应用密码
Content-Type: application/json
  • base64编码规则:将 管理员用户名:应用密码 拼接(注意中间是冒号),再进行 Base64 编码(比如用户名 admin,应用密码 abcd 1234 efgh 5678 ijkl 9012,拼接后是 admin:abcd 1234 efgh 5678 ijkl 9012,编码后类似 YWRtaW46YWJjZCAxMjM0IGVmZ2ggNTY3OCBpamtsIDkwMTI=);
  • 在线 Base64 编码工具:base64encode.org(开发时可临时使用,正式环境用代码自动编码)。

3. 请求体(Body)

JSON 格式,包含文章的核心信息(必填字段:titlecontentstatus),完整参数示例:

json

{
  "title": "这是通过 API 插入的文章标题",
  "content": "这是文章正文内容,可以包含 <strong>HTML 标签</strong> 和图片:<img src=\"https://你的域名/wp-content/uploads/2024/05/xxx.jpg\" alt=\"示例图片\">",
  "status": "publish", // 发布状态:publish(立即发布)、draft(草稿)、pending(待审核)
  "excerpt": "这是文章摘要(可选)",
  "categories": [1, 3], // 分类ID(可在后台「文章→分类」查看,地址栏数字就是ID)
  "tags": [2, 5], // 标签ID(可选)
  "featured_media": 123, // 特色图片ID(需先通过 API 上传图片获取ID,可选)
  "author": 1, // 作者ID(默认管理员ID为1,可选)
  "format": "standard" // 文章格式:standard(标准)、aside(日志)、image(图片)等(可选)
}

四、代码示例(php语言)直接上完整代码

<?php



// 配置信息


$wp_url = "https://www.你的域名.com/"; // 请修改为你的WordPress网站地址
$username = "用户名"; // 请修改为你的WordPress管理员用户名
$app_password = "VgJw SGBa 1245 yyyy PqhK 5y5y"; // 应用密码
$author_id = 2; // 作者ID
$category_id = 2; // 分类ID

// 初始化变量
$form_data = array(
    'scammer_name' => '',
    'loss_amount' => '',
    'platform' => '',
    'contact' => '',
    'real_info' => '',
    'experience' => '',
    'lesson' => ''
);
$errors = array();
$success = false;
$submitted = false;
$confirm_submit = false;

// 处理表单提交
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // 验证表单数据
    if (isset($_POST['submit_confirm'])) {
        // 双重确认后的最终提交
        $form_data = $_POST;
        $confirm_submit = true;
        
        // 验证必填项
        if (empty($form_data['scammer_name'])) $errors[] = "请填写骗子姓名或化名";
        if (empty($form_data['loss_amount'])) $errors[] = "请填写诈骗损失金额";
        if (empty($form_data['platform'])) $errors[] = "请填写被骗平台";
        if (empty($form_data['contact'])) $errors[] = "请填写骗子联系方式";
        if (empty($form_data['experience'])) $errors[] = "请填写详细诈骗经历";
        
        // 如果没有错误,调用API发布文章
if (empty($errors)) {
    // 调用修改后的函数
    $publish_result = publish_to_wordpress($form_data, $username, $app_password, $author_id, $category_id);
    $success = $publish_result['success'];
    $debug_response = $publish_result['debug']; // 从返回结果中获取调试信息
    $submitted = true;
}
    } elseif (isset($_POST['submit'])) {
        // 第一次提交,显示确认页面
        $form_data = $_POST;
        // 简单验证必填项
        if (empty($form_data['scammer_name'])) $errors[] = "请填写骗子姓名或化名";
        if (empty($form_data['loss_amount'])) $errors[] = "请填写诈骗损失金额";
        if (empty($form_data['platform'])) $errors[] = "请填写被骗平台";
        if (empty($form_data['contact'])) $errors[] = "请填写骗子联系方式";
        if (empty($form_data['experience'])) $errors[] = "请填写详细诈骗经历";
    }
}




/**
 * 发布文章到WordPress(使用 cURL)
 * 
 * @return array 一个包含 'success' (bool) 和 'debug' (string) 的数组
 */
function publish_to_wordpress($data, $username, $app_password, $author_id, $category_id) {
    // 1. API 地址
    $api_url = "https://www.51yhyh.com/wp-json/wp/v2/posts";

    // 2. 生成文章内容 (这部分和原来一样)
    $title = "在{$data['platform']}被{$data['contact']}被骗{$data['loss_amount']}";
    $content = "
<h2>诈骗信息详情</h2>
<p><strong>骗子姓名/化名:</strong>" . htmlspecialchars($data['scammer_name'], ENT_QUOTES) . "</p>
<p><strong>诈骗损失:</strong>" . htmlspecialchars($data['loss_amount'], ENT_QUOTES) . "</p>
<p><strong>被骗平台:</strong>" . htmlspecialchars($data['platform'], ENT_QUOTES) . "</p>
<p><strong>骗子联系方式:</strong>" . htmlspecialchars($data['contact'], ENT_QUOTES) . "</p>
";
    if (!empty($data['real_info'])) {
        $content .= "<p><strong>骗子实名信息:</strong>" . htmlspecialchars($data['real_info'], ENT_QUOTES) . "</p>";
    }
    $content .= "
<h2>详细诈骗经历</h2>
<p>" . nl2br(htmlspecialchars($data['experience'], ENT_QUOTES)) . "</p>
<h2>经验教训总结</h2>
<p>" . htmlspecialchars($data['lesson'], ENT_QUOTES) . "</p>
<p><em>本文由受害者自愿提交,旨在提醒他人避免类似诈骗。如有侵权、不实或不适侵权等,请联系作者或者管理员处理</em></p>
";

    // 3. 构建请求数据
    $post_data = json_encode(array(
        'title' => $title,
        'content' => $content,
        'status' => 'publish',
        'excerpt' => $title,
        'author' => $author_id,
        'categories' => array($category_id),
    ));

   // 4. 构建请求头(添加 Cache-Control 和 Pragma 头)
$auth = base64_encode("$username:$app_password");
$headers = array(
    "Authorization: Basic $auth",
    "Content-Type: application/json",
    "Cache-Control: no-cache, no-store, must-revalidate", // 禁止缓存
    "Pragma: no-cache", // 兼容旧服务器
    "Expires: 0" // 立即过期
);

    // 5. 初始化 cURL
    $ch = curl_init($api_url);
    if ($ch === false) {
        $debug_info = "<p><strong>cURL 初始化失败:</strong> " . curl_error($ch) . "</p>";
        return array('success' => false, 'debug' => $debug_info);
    }

    // 6. 设置 cURL 选项
    curl_setopt_array($ch, array(
        CURLOPT_POST => true,
        CURLOPT_POSTFIELDS => $post_data,
        CURLOPT_HTTPHEADER => $headers,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT => 30,
        // 重要:获取响应头
        CURLOPT_HEADER => true, 
        // 重要:获取请求头
        CURLINFO_HEADER_OUT => true, 
        // 注意:在生产环境中应开启 SSL 验证
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_SSL_VERIFYHOST => false,
    ));

    // 7. 执行请求并获取响应
    $response_full = curl_exec($ch); // 包含响应头和响应体
    $curl_errno = curl_errno($ch);
    $curl_error = curl_error($ch);

    // 8. 获取详细的请求和响应信息
    $request_header = curl_getinfo($ch, CURLINFO_HEADER_OUT);
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    
    // 9. 分离响应头和响应体
    $header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
    $response_header = substr($response_full, 0, $header_size);
    $response_body = substr($response_full, $header_size);

    // 10. 构建调试信息
    $debug_info = "
    <p><strong>请求 URL:</strong> $api_url</p>
    <p><strong>请求头:</strong><br><pre>" . htmlspecialchars($request_header) . "</pre></p>
    <p><strong>请求体:</strong><br><pre>" . htmlspecialchars($post_data) . "</pre></p>
    <hr>
    <p><strong>cURL 错误码:</strong> $curl_errno</p>
    <p><strong>cURL 错误信息:</strong> $curl_error</p>
    <p><strong>响应状态码:</strong> $http_code</p>
    <p><strong>响应头:</strong><br><pre>" . htmlspecialchars($response_header) . "</pre></p>
    <p><strong>响应体:</strong><br><pre>" . (empty($response_body) ? '无响应内容 (请求可能被服务器防火墙拦截或超时)' : htmlspecialchars($response_body)) . "</pre></p>
    ";

    // 11. 关闭 cURL 资源
    curl_close($ch);

    // 12. 判断是否成功并返回结果
    $success = ($http_code === 201);
    return array('success' => $success, 'debug' => $debug_info);
}






?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>诈骗经历提交 - 曝光骗子,警示他人</title>
    <style>
        /* 全局样式 */
        * {
            box-sizing: border-box;
            margin: 0;
            padding: 0;
        }
        
        body {
            font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
            line-height: 1.6;
            color: #333;
            background-color: #f5f5f5;
            padding: 20px;
        }
        
        .container {
            max-width: 800px;
            margin: 0 auto;
            background: #fff;
            border-radius: 10px;
            box-shadow: 0 2px 15px rgba(0, 0, 0, 0.1);
            overflow: hidden;
        }
        
        header {
            background: #2c5282;
            color: #fff;
            padding: 20px;
            text-align: center;
        }
        
        header h1 {
            font-size: 24px;
            margin-bottom: 10px;
        }
        
        header p {
            font-size: 16px;
            opacity: 0.9;
        }
        
        .form-section, .confirm-section, .result-section {
            padding: 25px;
        }
        
        h2 {
            color: #2c5282;
            margin-bottom: 20px;
            font-size: 20px;
            border-bottom: 2px solid #e2e8f0;
            padding-bottom: 10px;
        }
        
        /* 表单样式 */
        .form-group {
            margin-bottom: 20px;
        }
        
        label {
            display: block;
            margin-bottom: 8px;
            font-weight: 600;
            color: #4a5568;
        }
        
        input[type="text"],
        input[type="number"],
        textarea,
        select {
            width: 100%;
            padding: 12px 15px;
            border: 1px solid #cbd5e0;
            border-radius: 6px;
            font-size: 16px;
            transition: border-color 0.3s;
        }
        
        input:focus,
        textarea:focus,
        select:focus {
            outline: none;
            border-color: #2c5282;
            box-shadow: 0 0 0 3px rgba(44, 82, 130, 0.1);
        }
        
        textarea {
            min-height: 150px;
            resize: vertical;
        }
        
        .help-text {
            font-size: 14px;
            color: #718096;
            margin-top: 5px;
        }
        
        /* 按钮样式 */
        .btn {
            display: inline-block;
            padding: 12px 24px;
            background: #2c5282;
            color: #fff;
            border: none;
            border-radius: 6px;
            font-size: 16px;
            font-weight: 600;
            cursor: pointer;
            transition: background-color 0.3s;
            text-align: center;
        }
        
        .btn:hover {
            background: #234269;
        }
        
        .btn-secondary {
            background: #718096;
        }
        
        .btn-secondary:hover {
            background: #4a5568;
        }
        
        .btn-danger {
            background: #e53e3e;
        }
        
        .btn-danger:hover {
            background: #c53030;
        }
        
        .btn-container {
            margin-top: 30px;
            display: flex;
            gap: 15px;
            flex-wrap: wrap;
        }
        
        /* 确认页面样式 */
        .confirm-card {
            background: #f7fafc;
            border: 1px solid #e2e8f0;
            border-radius: 6px;
            padding: 20px;
            margin-bottom: 25px;
        }
        
        .confirm-item {
            margin-bottom: 15px;
        }
        
        .confirm-label {
            font-weight: 600;
            color: #2d3748;
            margin-bottom: 5px;
        }
        
        .confirm-value {
            color: #4a5568;
        }
        
        /* 结果页面样式 */
        .result-icon {
            text-align: center;
            font-size: 60px;
            margin-bottom: 20px;
        }
        
        .success-icon {
            color: #48bb78;
        }
        
        .error-icon {
            color: #e53e3e;
        }
        
        .result-message {
            text-align: center;
            font-size: 18px;
            margin-bottom: 25px;
        }
        
        /* 错误提示 */
        .error-messages {
            background: #fee2e2;
            color: #c53030;
            border-radius: 6px;
            padding: 15px;
            margin-bottom: 20px;
            list-style-position: inside;
        }
        
        .error-messages li {
            margin-bottom: 5px;
        }
        
        .error-messages li:last-child {
            margin-bottom: 0;
        }
        
        /* 响应式调整 */
        @media (max-width: 600px) {
            .container {
                padding: 0;
            }
            
            .form-section, .confirm-section, .result-section {
                padding: 15px;
            }
            
            .btn-container {
                flex-direction: column;
                gap: 10px;
            }
            
            .btn {
                width: 100%;
            }
            
            header h1 {
                font-size: 20px;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <header>
            <h1>诈骗经历提交</h1>
            <p>分享你的经历,警示他人,共同打击诈骗</p>
        </header>
        
        <?php if ($submitted): ?>
            <!-- 提交结果页面 -->
            <div class="result-section">
                <div class="result-icon <?php echo $success ? 'success-icon' : 'error-icon'; ?>">
                    <?php echo $success ? '✓' : '✗'; ?>
                </div>
                <div class="result-message">
    <?php if ($success): ?>
        <h2>提交成功!</h2>
        <p>感谢你的分享,你的经历将帮助更多人避免受骗。</p>
    <?php else: ?>
        <h2>提交失败</h2>
        <p>抱歉,发布过程中出现错误。</p>
    <?php endif; ?>
</div>

<!-- 总是显示调试信息,方便排查问题    不能删除  
<div style="background-color: #f8f8f8; padding: 15px; border-left: 4px solid <?php echo $success ? '#00a000' : '#ff0000'; ?>; margin: 15px 0; text-align: left; font-family: monospace; overflow-x: auto;">
    <p><strong>=== API 请求调试信息 ===</strong></p>
    <?php echo $debug_response; ?>
</div>
 -->
  
  
  
              <div class="btn-container">
                    <a href="/jingyan/cheat" class="btn">前往查看</a>
                </div>
              
                <div class="btn-container">
                    <a href="/?action=report_scam" class="btn">返回提交页面</a>
                </div>
            </div>
        
        <?php elseif (isset($_POST['submit']) && empty($errors)): ?>
            <!-- 确认提交页面 -->
            <div class="confirm-section">
                <h2>确认提交信息</h2>
                <p>请仔细检查以下信息,确认无误后点击"确认发布"。</p>
                
                <div class="confirm-card">
                    <div class="confirm-item">
                        <div class="confirm-label">骗子姓名/化名</div>
                        <div class="confirm-value"><?php echo htmlspecialchars($form_data['scammer_name']); ?></div>
                    </div>
                    
                    <div class="confirm-item">
                        <div class="confirm-label">诈骗损失</div>
                        <div class="confirm-value"><?php echo htmlspecialchars($form_data['loss_amount']); ?></div>
                    </div>
                    
                    <div class="confirm-item">
                        <div class="confirm-label">被骗平台</div>
                        <div class="confirm-value"><?php echo htmlspecialchars($form_data['platform']); ?></div>
                    </div>
                    
                    <div class="confirm-item">
                        <div class="confirm-label">骗子联系方式</div>
                        <div class="confirm-value"><?php echo htmlspecialchars($form_data['contact']); ?></div>
                    </div>
                    
                    <?php if (!empty($form_data['real_info'])): ?>
                    <div class="confirm-item">
                        <div class="confirm-label">骗子实名信息</div>
                        <div class="confirm-value"><?php echo htmlspecialchars($form_data['real_info']); ?></div>
                    </div>
                    <?php endif; ?>
                    
                    <div class="confirm-item">
                        <div class="confirm-label">详细诈骗经历</div>
                        <div class="confirm-value"><?php echo nl2br(htmlspecialchars($form_data['experience'])); ?></div>
                    </div>
                    
                    <div class="confirm-item">
                        <div class="confirm-label">经验教训总结</div>
                        <div class="confirm-value"><?php echo htmlspecialchars($form_data['lesson']); ?></div>
                    </div>
                </div>
                
                <p class="help-text"><strong>注意:</strong>提交后文章将发布到全网,无法撤回。请确保信息真实准确。</p>
                
                <form method="post" action="">
                    <!-- 隐藏字段,传递表单数据 -->
                    <?php foreach ($form_data as $key => $value): ?>
                        <input type="hidden" name="<?php echo $key; ?>" value="<?php echo htmlspecialchars($value); ?>">
                    <?php endforeach; ?>
                    
                    <div class="btn-container">
                        <button type="submit" name="submit_confirm" class="btn btn-danger">确认发布</button>
                        <button type="button" class="btn btn-secondary" onclick="history.back()">返回修改</button>
                    </div>
                </form>
            </div>
        
        <?php else: ?>
            <!-- 表单页面 -->
            <div class="form-section">
                <h2>填写诈骗经历</h2>
                <p>请详细填写你的被骗经历,帮助更多人提高警惕。</p>
                
                <?php if (!empty($errors)): ?>
                    <ul class="error-messages">
                        <?php foreach ($errors as $error): ?>
                            <li><?php echo $error; ?></li>
                        <?php endforeach; ?>
                    </ul>
                <?php endif; ?>
                
                <form method="post" action="">
                    <div class="form-group">
                        <label for="scammer_name">骗子姓名或化名 <span style="color: red;">*</span></label>
                        <input type="text" id="scammer_name" name="scammer_name" 
                               value="<?php echo htmlspecialchars($form_data['scammer_name']); ?>" 
                               required>
                        <div class="help-text">填写骗子的真实姓名、昵称或常用化名</div>
                    </div>
                    
                    <div class="form-group">
                        <label for="loss_amount">诈骗损失 <span style="color: red;">*</span></label>
                        <input type="text" id="loss_amount" name="loss_amount" 
                               value="<?php echo htmlspecialchars($form_data['loss_amount']); ?>" 
                               required>
                        <div class="help-text">例如:5000元、1个比特币等</div>
                    </div>
                    
                    <div class="form-group">
                        <label for="platform">被骗平台 <span style="color: red;">*</span></label>
                        <input type="text" id="platform" name="platform" 
                               value="<?php echo htmlspecialchars($form_data['platform']); ?>" 
                               required>
                        <div class="help-text">例如:微信、小红书、抖音、淘宝、游戏平台等</div>
                    </div>
                    
                    <div class="form-group">
                        <label for="contact">骗子联系方式 <span style="color: red;">*</span></label>
                        <input type="text" id="contact" name="contact" 
                               value="<?php echo htmlspecialchars($form_data['contact']); ?>" 
                               required>
                        <div class="help-text">例如:QQ账号123456、微信号wxid_123、手机号138****1234等</div>
                    </div>
                    
                    <div class="form-group">
                        <label for="real_info">骗子其他实名信息</label>
                        <textarea id="real_info" name="real_info" 
                                 placeholder="越多越好,如身份证号、银行卡账号、支付宝账号、真实姓名、地址等"><?php echo htmlspecialchars($form_data['real_info']); ?></textarea>
                        <div class="help-text">如果知道骗子的真实身份信息,请尽量提供,有助于他人识别</div>
                    </div>
                    
                    <div class="form-group">
                        <label for="experience">详细诈骗经历 <span style="color: red;">*</span></label>
                        <textarea id="experience" name="experience" 
                                 required placeholder="请详细描述被骗的经过,包括时间、地点、过程、聊天记录等,越详细越好"><?php echo htmlspecialchars($form_data['experience']); ?></textarea>
                        <div class="help-text">描述越详细,对他人的警示作用越大。可以分段叙述,带上具体时间点</div>
                    </div>
                    
                    <div class="form-group">
                        <label for="lesson">经验教训总结</label>
                        <textarea id="lesson" name="lesson" 
                                 placeholder="总结这次被骗的教训,提醒他人如何防范类似诈骗"><?php echo htmlspecialchars($form_data['lesson']); ?></textarea>
                        <div class="help-text">分享你的感悟和建议,帮助他人避免同样的陷阱</div>
                    </div>
                    
                    <div class="btn-container">
                        <button type="submit" name="submit" class="btn">下一步:确认提交</button>
                    </div>
                </form>
            </div>
        <?php endif; ?>
    </div>
    
    <script>
        // 自动调整textarea高度
        document.addEventListener('DOMContentLoaded', function() {
            const textareas = document.querySelectorAll('textarea');
            
            textareas.forEach(textarea => {
                textarea.addEventListener('input', function() {
                    this.style.height = 'auto';
                    this.style.height = (this.scrollHeight) + 'px';
                });
                
                // 初始化高度
                textarea.style.height = (textarea.scrollHeight) + 'px';
            });
        });
    </script>
</body>
</html>

代码解释:我是在单独的php页面中用户插入被诈骗经历文章使用的,。页面让用户填写:骗子姓名或者化名,诈骗损失,被骗平台(提示:微信,小红书,抖音等),骗子联系方式(提示:如qq账号12456),骗子其他实名信息(提示:越多越好如身份证号,银行卡账号等),详细诈骗经历(提示:越详细越好,最好带上时间更增加。可以换行),经验教训总结) 提交按钮,点击提交按钮后重复提示是否提交并发布到全网,再次点击确认后就调用api发布到网站,并在页面返回发布状态。页面设置好看点,手机页面自适应。标题就用:在{被诈骗平台}被{骗子联系方式}被骗{诈骗损失}。文章内容是上门所有用户填写的类目和填写信息,换行将每个类目隔开。作者id为2,分类id为2,标签为空,摘要同标题。应用密码为*******

遇到的问题及处理方法

1.Warning: Use of undefined constant ABSPATH – assumed ‘ABSPATH’ (this will throw an Error in a future version of PHP)

你在运行 fanzhafabu.php 时遇到的这串错误,核心原因是 文件路径配置错误,导致代码无法找到 WordPress 核心文件。

问题原因说明

错误信息中提到的:

  • ABSPATH 和 WPINC 是 WordPress 定义的常量,分别代表 WordPress 安装根目录和核心文件目录。
  • 你的代码在单独的 PHP 文件中直接使用了这两个常量,但因为这个文件没有通过 WordPress 环境加载(比如直接访问该文件),所以这两个常量未被定义,导致出现警告。
  • 最后 require_once 尝试包含一个不存在的文件路径(ABSPATHWPINC/class-http.php 其实是 ABSPATH 和 WPINC 拼接错误的结果),从而引发致命错误。

解决方案

方案 1:推荐,通过 WordPress 加载该文件(最佳实践)

将你的 fanzhafabu.php 文件移动到 WordPress 主题目录或插件目录,并通过 functions.php 或插件主文件加载,确保 WordPress 环境已初始化。

操作步骤:

  1. 将 fanzhafabu.php 移动到你的主题目录,例如:
/www/wwwroot/www.你的域名.com/wp-content/themes/你的主题名/fanzhafabu.php

2,在主题的 functions.php 中添加以下代码,通过 WordPress 的 template_redirect 钩子加载你的文件

function load_scam_report_page() {
    // 当访问特定 URL 时加载你的文件
    if (isset($_GET['action']) && $_GET['action'] === 'report_scam') {
        require_once get_template_directory() . '/fanzhafabu.php';
        exit;
    }
}
add_action('template_redirect', 'load_scam_report_page');

3.通过以下 URL 访问你的表单页面:

https://www.你的域名.com/?action=report_scam

2.一直提示发布失败,可能是被缓存插件原因

WordPress API 请求被服务器的缓存插件(WP-Super-Cache)拦截了,并返回了网站的首页 HTML 内容,而不是预期的 JSON 响应。

问题分析

  1. 请求本身是成功的cURL 错误码: 0 和 响应状态码: 200 表明,你的服务器成功地向 https://www.51yhyh.com/wp-json/wp/v2/posts 发送了请求,并且对方服务器也返回了一个状态为 “成功” 的响应。
  2. 响应内容不正确响应体 部分显示,服务器返回的不是创建文章成功后应有的 JSON 数据,而是你网站首页的完整 HTML 代码。
  3. 罪魁祸首:响应体末尾的 HTML 注释暴露了问题的根源:<!-- Cached page generated by WP-Super-Cache on 2025-11-09 17:57:02 -->。这说明,当你的 PHP 脚本通过 curl 访问 /wp-json/ 这个地址时,服务器上的 WP-Super-Cache 插件认为这是一个普通的页面访问请求,并直接返回了它之前缓存好的首页内容,而没有将请求转发给 WordPress 的 REST API 处理程序。

解决方案

你需要配置 WP-Super-Cache 插件,让它不对 wp-json 的请求进行缓存。

步骤如下:

  1. 登录你的 WordPress 后台
  2. 找到并进入 WP-Super-Cache 的设置页面。通常在 “设置” -> “WP-Super-Cache”
  3. 找到 “高级” 设置标签页
  4. 在 “不缓存的字符串” 或 “Rejected URI (s)” 输入框中,添加以下内容:^/wp-json/(带正则符号,匹配所有 /wp-json/ 开头的路径)
  5. 填写后点击 “更新状态”,并清空现有缓存

一号优惠 · 51福利网薅羊毛福利具有时效性,如已失效,请留言
文章名称:《wordpress怎么插入api文章(php代码版)》-一号优惠 · 51福利网
免责申明:本站所有活动信息均来自网络,如有失效、违规、不实或侵权,请联系我们删除。谢谢

评论 抢沙发

一号优惠经验分享网最新最全薅羊毛,现金红包线报网

一号优惠经验分享网提供每日最新内部优惠,薅羊毛活动,现金红包领取,免费福利和网赚福利手机赚钱线报,打造中国最受欢迎的网赚信息发布平台!51福利网

51联盟线报群赚钱·合作·帮助

登录

找回密码

注册