继续之前,请阅读以下内容:
http://www.slideshare.net/andrewnacin/you-dont-know-query-wordcamp-netherlands-2012
它是由核心WordPress开发人员编写的,您应该认为它是必读的。你不应该使用
query_posts
, 了解如何正确使用循环非常重要。该演示将展示最佳实践、如何使用以及为什么使用它们。
我可以看到你采取的方法,你想做的是:
foreach post that\'s of type product that belongs to me
add a function that fills in the default value for that post
不幸的是,该过滤器适用于所有帖子,而不是单个帖子。此外,如果您使用的是javascript,而您使用的是lambdas,并且它是一个逐后过滤器,则您的方法是使用命名函数,例如“gfrom\\u pre\\u render\\u0”$post->ID它可能会工作,但该过滤器不存在,并且您没有使用lambdas。
因此,相反,将您的函数添加到过滤器中,它将在所有表单上执行。然后过滤掉,使其仅发生在您想要的对象上:
add_filter(\'gfrom_pre_render_7\', \'populate_each_product\');
function populate_each_product ($form){
global $post, $current_user;
if($post->post_type == \'product\' && $post->post_author == $current_user->ID){
foreach($form["fields"] as &$field){
if($field["id"] == 1){
$field["defaultValue"] = get_post_meta($post->ID, \'_virtual\', true);
}
}
}
return $form;
}
此外,这也是正确执行查询的方式:
$q = new WP_Query( array( \'author\' => $current_user->ID, \'post_type\' => \'product\' ) );
if ( $q->have_posts() ) {
while ( $q->have_posts() ) {
$q->the_post();
}
wp_reset_postdata();
}