我想为我的WordPress创建一个PHP文件,并使用一个表单通过URL逗号分隔的参数值来创建多个帖子.

When I submit my form, the URL is like:
https://example.com/import-number.php?numbers=1111,2222,3333,4444

所有值都用逗号分隔,我将它们转换为一个值array.

预计最终结果为:
$titles = array(1111,2222,3333,4444);

我使用foreach循环使用wp_insert_post函数 for each 数字创建一个POST.但它只是 Select 第一个值,而它应该 Select 所有值,并 for each 值运行foreach循环.

我的import-number.php分是:

<?php 
require_once "wp-config.php";

global $wpdb, $post;

$passurl = explode(",", $_GET["numbers"]);
$params  = array();

$i = 1;
    
foreach( $passurl as $params ) {
    if($i==1000){
        break;
    }
    
    $titles = array($passurl[$i]);
    $i++;
    
    wp_insert_post(
        array(
            'post_title' => $title,
            'post_category' => 16,
            'post_status' => 'publish'
        )
    );
}
?>

这有什么不对的?

推荐答案

你的问题不是很清楚.POST_TITLE不能是array.

此外,在您的代码中也不需要以下内容:

  • global $wpdb, $post;
  • $params = array();

您应该使用foreach循环中的数组键,而不是变量$i.

变量$titles没有在循环外部使用,那么为什么需要它呢?

或许可以try 以下几种方法:

<?php 
require_once "wp-config.php";

$numbers = explode(",", $_GET["numbers"]);
$titles  = array(); // Initializing

foreach( $numbers as $key => $number ) {
    if( $key === 1000 ) {
        break;
    }
    $titles[] = $number; // add each number to the $titles array.
    
    $post_id = wp_insert_post( array(
        'post_title'    => $number,
        'post_category' => 16,
        'post_status'   => 'publish'
    ) );
}
?>

Php相关问答推荐

尽管包含目标日期,但日期范围比较仍有意外输出

邮箱打开跟踪器不工作时发送邮件使用laravel调度程序

如何在Woocommerce中禁用机器人添加到推车?

PHP,ZipArchive删除一个空文件?

Mysqli_stmt::Execute():结果字段元数据中存在过早的EOF

在WooCommerce中禁用特定日期之前的免费送货

使用正则表达式搜索两个子字符串(没有重叠/共享字符)

ForHumans函数中的月当量与单位限制

获取并判断WooCommerce用户订阅结束日期

如何在PHP中组合日期范围

Laravel服务Provider 没有向服务类注入价值

HTAccess重写一些URL,但将所有其他URL发送到另一个页面

curl_close()未从PHP 8开始写入CURLOPT_COOKIEJAR会话文件

Symfony框架锁定和.env设置

将一个表中的行连接为不同表MYSQL中的一列

AWS S3:当对象名称包含 % 时复制对象失败并出现错误 - 无效的复制源编码

PHP简单地将物品装在盒子里会导致未使用的空间,但还有剩余容量

为WooCommerce中的Guest用户保存唯一的客户代码到订单中

正则表达式 (php) 匹配单个 [ 或单个 ] 但忽略 [[ ]] 之间的任何内容?

即使密码匹配,密码处理程序也会返回错误