удалить строку из поля повторителя ACF - PullRequest
0 голосов
/ 14 октября 2018

У меня есть кнопка, которая, когда вы щелкаете по ней, запускает ajax-вызов функции, которая должна удалить строку в поле повтора acf на основе атрибута данных.

Вот эта функция, но строка ввопрос не удаляется:

add_action('wp_ajax_nopriv_remove_from_playlist','remove_from_playlist');
add_action( 'wp_ajax_remove_from_playlist', 'remove_from_playlist' );

function remove_from_playlist() {
    $field_key = 'field_5b6b8c16eb66b';
    $userID = $_POST['user'];
    $lessonID = $_POST['lessonID'];

    if( have_rows('user_playlist', $userID) ):
        while( have_rows('user_playlist', $userID) ) : the_row();
            $value = get_sub_field('post_id');

            if($value === $lessonID) {
                $row = get_row_index();
                delete_row($field_key, $row, $userID);
            }
        endwhile;
    endif;
    die();
}

1 Ответ

0 голосов
/ 15 октября 2018

Это не очень хорошо задокументировано;вам нужно сообщить ACF, что вы передаете идентификатор пользователя, а не идентификатор сообщения.Для этого добавьте user_ к вашей переменной:

if( have_rows('user_playlist', 'user_' . $userID) ):
    while( have_rows('user_playlist', 'user_' . $userID) ) : the_row();
        $value = get_sub_field('post_id');

        if($value === $lessonID) {
            $row = get_row_index();
            delete_row($field_key, $row, 'user_' . $userID);
        }
    endwhile;
endif;
...