Неустранимая ошибка сохранения идентификатора CPT в текущем пользовательском мета - PullRequest
0 голосов
/ 03 мая 2020

У меня есть CPT под названием contrib. Когда я добавляю сообщение для участника, я хочу вставить идентификатор для сообщения для участника в мета пользователя для текущего пользователя в ACF (текст) с именем contrib-id.

Вот что у меня есть для моего функции. php

Есть идеи, как исправить фатальную ошибку?

function save_contrib_id_to_user_meta($id, $post)
    {
        if($post->post_type != 'contrib') {
            return;
        }

    // update the current USER post 

    if ( is_user_logged_in() ) {
        update_user_meta( get_current_user_id(), 'contrib-id', ( $_POST['id'] ) );
    }
}    
add_action('save_post', 'save_contrib_id_to_user_meta');

А вот ошибка, которую она выдает

Fatal error: Uncaught ArgumentCountError: Too few arguments to function save_contrib_id_to_user_meta(), 1 passed in /home/customer/www/mydomain.com/public_html/wp-includes/class-wp-hook.php on line 289 and exactly 2 expected in /home/customer/www/mydomain.com/public_html/wp-content/plugins/code-snippets/php/snippet-ops.php(446) : eval()'d code:1 Stack trace: #0 /home/customer/www/mydomain.com/public_html/wp-includes/class-wp-hook.php(289): save_contrib_id_to_user_meta(28505) #1 /home/customer/www/mydomain.com/public_html/wp-includes/class-wp-hook.php(311): WP_Hook->apply_filters(NULL, Array) #2 /home/customer/www/mydomain.com/public_html/wp-includes/plugin.php(478): WP_Hook->do_action(Array) #3 /home/customer/www/mydomain.com/public_html/wp-includes/post.php(4153): do_action('save_post', 28505, Object(WP_Post), true) #4 /home/customer/www/mydomain.com/public_html/wp-includes/post.php(4244): wp_insert_post(Array, false) #5 /home/customer/www/mydomain.com/public_html/wp-includes/post.php(3160): wp_update_post(Array) #6 /home/customer/www/r in /home/customer/www/mydomain.com/public_html/wp-content/plugins/code-snippets/php/snippet-ops.php(446) : eval()'d code on line 1

1 Ответ

1 голос
/ 03 мая 2020

Проблема в вашем add_action, вам нужно указать количество аргументов, если их больше одного (так как вы передаете $id и $post).

Кроме того, вы можете использовать крючок save_post_{post-type}, но save_post все равно будет работать.

function save_contrib_id_to_user_meta($id, $post)
    {
        if($post->post_type != 'contrib') {
            return;
        }

    // update the current USER post 

    if ( is_user_logged_in() ) {
        update_user_meta( get_current_user_id(), 'contrib-id', $id ) );
    }
}
// This is the line that needs to change. Adding the argument count.    
add_action('save_post', 'save_contrib_id_to_user_meta', 10, 2);

// You could use this instead and skip the post type check
add_action('save_post_contrib', 'save_contrib_id_to_user_meta', 10, 2);
...