基于WP_Query的结果创建新的WordPress帖子[wp_INSERT_POST

时间:2014-08-02 作者:stankobrin

我有一个页面,用户可以根据“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!

1 个回复
最合适的回答,由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%有效!

结束

相关推荐

Pre_Get_Posts导致自定义帖子出现在‘Pages’菜单下

为了启用自定义后期归档的分页,我添加了pre\\u get\\u posts函数。但是,有趣的是,这导致我的自定义帖子在“页面”菜单下被复制。以下是导致问题的代码。请告知。 function truck_pre_pagination( $qry ) { if ( $qry->is_main_query() ) { $qry->set(\'orderby\',\'date\'); $qry->set