WORDPRESS: syn c удаление пользовательского типа записи в учетной записи WordPress - PullRequest
0 голосов
/ 03 марта 2020

Итак, я получил пользовательский тип записи, который называется "члены связаны с ACF". и я синхронизировал его с пользователями WordPress. Если пользователь добавляется / редактируется в пользовательском типе записи, он также добавляет / изменяет его в пользователях Wordpress.

Поэтому единственное, что не синхронизируется, - это удаление пользователей. Когда я удаляю пользователя в пользовательском типе записи, он не удаляет пользователя WordPress.

код, который я имею для удаления пользователя в пользовательском типе записи, выглядит следующим образом:

add_action('trashed_post', 'on_delete_members');
function on_delete_members($post_id)
{
    if (get_post_type( $post_id  ) == 'members' ) {
        $email_address = get_post_meta($post_id, 'email', true);

        $user = get_user_by('email', $email_address);

        $id = $user->ID;

        wp_delete_user($id);

        wp_delete_post($post_id, true);
    }
}

Код для синхронизации c добавления и редактирования пользователей:

add_action('save_post', 'maintain_user_data', 10, 1);
add_action('publish_post', 'maintain_user_data', 10, 1);

function maintain_user_data($post_ID)
{
    $post_type = get_post_type($post_ID);
    if ($post_type == 'members') {

        $display_name= get_post_meta($post_ID, 'contactperson', true);
        $password = wp_generate_password(12, false);
        $email_address = get_post_meta($post_ID, 'email', true);

        $user = get_user_by('email', $email_address);
        $user_id = $user->ID;
        $post_second_id = get_field('post_second_id', $post_ID);
        $user_second_id = get_field('user_second_id', $post_ID);



        if ( email_exists($email_address)) {

            wp_update_user([
                'ID' => $user_id,
                'user_email' => $email_address,
                'display_name' => $display_name,
            ]);

        } else if (!email_exists($email_address)){
            //   $allowed_roles = array('administrator', 'author', 'editor');
            $user = get_user_by('login', $email_address);
            $user_id = $user->ID;

            if (current_user_can( 'administrator' + 'author' + 'editor')) {

                if ($post_second_id == $post_ID)  {


                    $user = get_user_by('id', $user_second_id);
                    $id = $user->ID;
                    global $wpdb;

                    wp_update_user([
                        'ID' => $id,
                        'user_login'    => $email_address,
                        'user_email' => $email_address,
                        'display_name' => $display_name,
                        'role' => 'Subscriber',

                    ]);
                    $wpdb->update($wpdb->users, array('user_login' => $email_address), array('ID' => $id));

                } else {
                    if ($email_address !== "") {
                        wp_insert_user([
                            'user_pass' => $password,
                            'user_login' => $email_address,
                            'user_email' => $email_address,
                            'display_name' => $display_name,
                            'role' => 'subscriber',
                            'ID' => $user_id

                        ]);


                        $user = get_user_by("email", $email_address);
                        $new_user_id = $user->ID;
                        $new_id_user = $new_user_id;
                        $new_id = $post_ID;
                        update_field('post_second_id', $new_id, $post_ID);
                        update_field('user_second_id', $new_id_user, $post_ID);


                        $email = $user->user_email;
                        $adt_rp_key = get_password_reset_key($user);

                        $rp_link = '<a href="' . home_url() . '/wachtwoord-resetten?action=rp&key=' . htmlspecialchars($adt_rp_key) . '&login=' . rawurlencode($email) . '">' . site_url() . '/wachtwoord_instellen' . '</a>';

                        $subject = "Uw account op website test.nl";
                        $headers = 'MIME-Version: 1.0' . "\r\n";
                        $headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";
                        $headers .= 'From: company <no-reply@test.nl>' . "\r\n";

                        $message = "Beste " . $display_name . ",<br>";
                        $message .= "Er is een account gemaakt op " . get_bloginfo('name') . " met het e-mailadress: " . $user->user_email . "<br>";
                        $message .= "Klik op deze link om je account te activeren <br>";
                        $message .= $rp_link . '<br>';

                        wp_mail($email, $subject, $message, $headers);
                    }
                }
            } else {

                $user = wp_get_current_user();

                $id = $user->ID;
                global $wpdb;

                wp_update_user([
                    'ID' => $id,
                    'user_login' => $email_address,
                    'user_email' => $email_address,
                    'display_name' => $display_name,
                    'role' => 'subscriber',

                ]);
                $wpdb->update($wpdb->users, array('user_login' => $email_address), array('ID' => $id));

                esc_url(get_home_url());
            }
        }
    }
}

Возможно, я что-то наблюдаю, но не могу понять, что.

1 Ответ

1 голос
/ 03 марта 2020

Итак, я понял, что немного изменил код:

add_action('trashed_post', 'on_delete_members');
function on_delete_members()
{
    $post = get_post();
    if ($post->post_type === 'members' ) {
        $email_address = get_post_meta($post->ID, 'email', true);
        $user = get_user_by('email', $email_address);

        $id = $user->ID;

        wp_delete_user($id);

        wp_delete_post($post->ID, true);
    }


 }

Еще одна вещь, которая мешала мне, это сценарий, который был у меня, который показан в этом посте off me.

из-за wp_delete_post($post->ID, true);, который уже принудительно удаляет его. 2 сценария мешают друг другу. удалив этот скрипт, он начал работать так, как я хочу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...