当用户购买产品时,如何在ACF字段中自动添加文本?(PHP/Wordpress)
有一个名为“project”的自定义帖子,其中包含acf字段当用户购买产品时,如何在ACF字段中自动添加文本?(PHP/Wordpress),php,wordpress,advanced-custom-fields,Php,Wordpress,Advanced Custom Fields,有一个名为“project”的自定义帖子,其中包含acf字段 每个帖子的互动程序都是用户名。 用户名来自登录用户的电子邮件id。 这篇文章的标题是杰夫(jeff@gmail.com). 当用户Jeff购买产品时,我需要在Jeff post的ACF字段“field_690D1EIS5X89”中自动添加“50” 检查用户是否购买了产品的代码运行良好: function has_bought( $value = 0 ) { if ( ! is_user_logged_in() &&am
每个帖子的互动程序都是用户名。
用户名来自登录用户的电子邮件id。 这篇文章的标题是杰夫(jeff@gmail.com).
当用户Jeff购买产品时,我需要在Jeff post的ACF字段“field_690D1EIS5X89”中自动添加“50” 检查用户是否购买了产品的代码运行良好:
function has_bought( $value = 0 ) {
if ( ! is_user_logged_in() && $value === 0 ) {
return false;
}
global $wpdb;
// Based on user ID (registered users)
if ( is_numeric( $value) ) {
$meta_key = '_customer_user';
$meta_value = $value == 0 ? (int) get_current_user_id() : (int) $value;
}
// Based on billing email (Guest users)
else {
$meta_key = '_billing_email';
$meta_value = sanitize_email( $value );
}
$paid_order_statuses = array_map( 'esc_sql', wc_get_is_paid_statuses() );
$count = $wpdb->get_var( $wpdb->prepare("
SELECT COUNT(p.ID) FROM {$wpdb->prefix}posts AS p
INNER JOIN {$wpdb->prefix}postmeta AS pm ON p.ID = pm.post_id
WHERE p.post_status IN ( 'wc-" . implode( "','wc-", $paid_order_statuses ) . "' )
AND p.post_type LIKE 'shop_order'
AND pm.meta_key = '%s'
AND pm.meta_value = %s
LIMIT 1
", $meta_key, $meta_value ) );
// Return a boolean value based on orders count
return $count > 0 ? true : false;
}
在用户购买产品后,此代码不会将50更新到登录用户帖子的acf字段。我尝试了title和post_title,但仍然没有更新。
我不确定,但可能是因为$post->ID?
if( has_bought() ){
$current_user = wp_get_current_user();
$current_user_id = $current_user->display_name;
// query to get a post with the user
$args = array(
'post_type' => 'project',
'posts_per_page' => -1,
'title' =>$current_user_id
); // end $args
$query = new WP_Query($args);
// if posts are returned, update field
if ($query->have_posts()) {
global $post;
update_field('field_690d1eis5xx89', '50', $post->ID);
} else {
return;
}
} // end if have_posts
我是初学者,你能帮帮我吗?谢谢根据文档,
update_field
函数接受三个参数,即$selector
$value
和$post_id
,但在您的代码中,您使用的似乎是$current_user_id
,我认为这可能不起作用
尝试添加$post\u id
代替$current\u user\u id
检查:尝试将Post ID替换为
$current\u user\u ID
,因为update\u field()
函数正在查找它update\u field($selector,$value,$Post\u ID)代码>我试过了,但没用。。我认为“acf/save_post”是错误的。当登录用户购买产品而不是保存帖子时,我需要向acf字段键添加50。。我尝试了acf/render_字段,但仍然不起作用。你说的“不起作用”到底是什么意思?请你回答你的问题并澄清一下好吗?当您运行代码时会发生什么,您期望会发生什么?有错误吗?另请参见。我更新了问题。你能帮帮我吗?谢谢。谢谢你的评论。我能问个问题吗?我需要在登录用户购买产品而不是保存帖子时将50更新到acf字段。我认为“acf/save_post”也是错误的。我尝试了acf/render_字段,但仍然不起作用。你能告诉我怎么处理吗?