好了,伙计们,这是一个场景。
我正在尝试设置一个函数,该函数将自动将一篇帖子(发布时)复制到另一种帖子类型。因此,一篇常规的博客文章被发布,发布后,它的所有信息都被复制到一个自定义的帖子类型(对于WP电子商务),自动为该博客文章创建一个存储条目。
我编写了一个函数,该函数负责提取所有信息,并使用wp\\u insert\\u post()将其插入到新帖子中。这一切都很好,除了一件事。我正在使用wp\\u set\\u object\\u terms()根据博客文章的标记设置新产品的商店类别ID。然而,由于某些原因,wp\\u set\\u object\\u terms()永远不起作用。
现在,这里有一个陷阱。我正在多站点安装上运行所有这些,并使用threeWP_Broadcast 允许我交叉发布帖子。博客帖子(必须复制到商店)从子站点发布并广播到主站点。这家商店位于主场地上。
因此,我将我的自定义函数连接到广播插件中,以便在将帖子从子站点广播到主站点时触发它。
除了wp\\u set\\u object\\u terms()之外,我的函数的所有功能都很好
功能如下:
function copy_post_to_store_product() {
global $blog_id;
global $wpdb;
// only copy the post over if on main site, not subsites
if ($blog_id == 1) {
$args = array(\'numberposts\' => 1);
$latest = get_posts($args);
foreach($latest as $post) : setup_postdata($post);
// if NOT Tip and NOT source avail, create product
// if source, price is ALWAYS $4
// auto create for source files only -- regular post type
$custom_meta = get_post_custom($post->ID);
// what kind of post is this?
$post_type = $custom_meta[\'cgc_post_type\'][0];
// does this post have a source file product associated with it?
$source_avail = $custom_meta[\'cgc_source_avail\'][0];
// source file price
$price = \'4\';
$product_info = array(
\'post_title\' => $post->post_title,
\'post_type\' => \'wpsc-product\',
\'post_content\' => $post->post_content,
\'post_author\' => $post->post_author,
\'post_status\' => \'draft\',
);
if($post_type == \'Regular\' && $source_avail == true) {
// only auto create product for Regular posts that have source files for sale
$product_id = wp_insert_post($product_info);
update_post_meta($product_id, \'_wpsc_price\', $price);
if (has_tag(\'blender\', $post->ID))
{
$product_cats = array(23,32);
}
elseif (has_tag(\'max\', $post->ID)) {
$product_cats = array(23,34);
}
elseif (has_tag(\'modo\', $post->ID)) {
$product_cats = array(23,19);
}
// set the product categories
wp_set_object_terms($product_id, $product_cats, \'wpsc_product_category\' );
}
endforeach;
}
}
该函数的工作方式是从主站点检索最新的帖子($blog\\u id==1),并将其所有信息复制到wp\\u insert\\u post()的变量中。
现在,真正有趣的是,如果我将该函数附加到publish\\u post挂钩上,它将非常有效,但不幸的是,我无法做到这一点,因为播发帖子时该挂钩不会触发。
任何想法都将不胜感激。