我有一个页面,用户可以根据“Ultimate WP Query Search filter”插件过滤自定义帖子类型的帖子列表。使用AJAX将结果传递给页面上的div,用户可以在其中为每个结果输入数量。
我需要做的是,一旦用户在quantity字段中输入了一个数量,那么来自该帖子的所有信息,加上该数量,就需要用于在不同的自定义帖子类型中创建新帖子。[目前,这是一个结果一个结果的基础上完成的,但如果可能的话,有1个“添加”按钮在最后循环通过每个结果,并为每个结果创建一个将是一等奖的帖子-但我们可以使用每个结果的“添加”按钮]
我正在使用以下代码创建新帖子:
<?php
$order_productcode = get_field(\'product_code\', $query->ID);
$order_productdesc = get_field(\'product_description\', $query->ID);
$order_productcost = get_field(\'selling_price\', $query->ID);
?>
<?php
if(isset($_POST[\'new_post\']) == \'1\') {
$post_title = $_POST[\'post_title\'];
$new_post = array(
\'post_type\' => \'order-items\',
\'ID\' => \'\',
\'post_author\' => $user->ID,
\'post_title\' => $post_title,
\'post_status\' => \'publish\'
);
$post_id = wp_insert_post($new_post);
add_post_meta($post_id, \'linked_order_id\', 379, true);
add_post_meta($post_id, \'product_code\', $order_productcode, true);
add_post_meta($post_id, \'product_description\', $order_productdesc, true);
add_post_meta($post_id, \'quantity\', \'1\', true);
add_post_meta($post_id, \'unit_price\', $order_productcost, true);
$post = get_post($post_id);
wp_redirect($post->guid);} ?>
然后使用以下代码触发表单:
<form method="post" action="">
<input type="text" class="orderresult_qty" name="post_title" size="45" id="input-title"/>
<input type="hidden" name="new_post" value="1"/>
<input class="subput round" type="submit" name="submit" value="Add"/>
在单个页面或硬编码页面示例中,这非常有效,但当代码放在Wordpress循环中时,提交项目时不会发生任何事情。不会显示错误,也不会创建项目。
我粘贴完整代码时遇到问题,因此这里有一个指向要点的链接,您可以在其中看到循环中的完整代码(在function.php文件中生成)
https://gist.github.com/stankobrin/bb0b7d38dbbe1fd3b83e
This is quite urgent so any assistance in getting this working will be appreciated!
最合适的回答,由SO网友:stankobrin 整理而成
感谢“金莫伊·库马尔·保罗”昨晚的出色帮助,让我走上了正确的道路。
问题是,由于代码在AJAX结果DIV中运行,Wordpress无法正确定位ID。也有必要使用AJAX发布数据,这很好。
对于任何想实现AJAX前端发布的人来说,我发现这篇文章非常宝贵:http://code.tutsplus.com/tutorials/adding-posts-to-a-sites-front-end-using-ajax--wp-25652
剩下的最后一项是将变量从wp_查询传递到表单本身,然后添加帖子。
为此,我创建了一个隐藏的表单字段,并将数据回送到值字段中:
<input type="hidden" class="orderresult_qty" id="apfdesc" name="apfdesc" value="<?php echo the_title() ;?>"/>
然后,我将字段的值传递给一个变量:
$orderdesc = $_POST[\'apfdesc\'];
最后更新了
add_post_meta
包含变量的数据:
add_post_meta($post_id, \'product_description\', $orderdesc, true);
解决方案100%有效!