Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当用户购买产品时,如何在ACF字段中自动添加文本?(PHP/Wordpress)_Php_Wordpress_Advanced Custom Fields - Fatal编程技术网

当用户购买产品时,如何在ACF字段中自动添加文本?(PHP/Wordpress)

当用户购买产品时,如何在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

有一个名为“project”的自定义帖子,其中包含acf字段
每个帖子的互动程序都是用户名。
用户名来自登录用户的电子邮件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_字段,但仍然不起作用。你能告诉我怎么处理吗?