Как удалить пользовательские условия таксономии в uninstall.php плагина?

Я пишу uninstall.php файл своего плагина и хотел бы, чтобы он удалил любые условия, которые были созданы в пользовательской таксономии плагина.

В uninstall.php файле плагина я использую это:

// Delete all custom terms for this taxonomy
$terms = get_terms('custom_taxonomy');
foreach ($terms as $term) {
    wp_delete_term( $term->ID, 'custom_taxonomy' );
}

Проблема, кажется, что пользовательская таксономия не регистрируется в этой точке, таким образом, get_terms возвращает ошибку для "недопустимой таксономии", таким образом я не могу удалить пользовательские условия этим способом, который кажется самым простым способом сделать так.

Если пользовательская таксономия не регистрируется, когда uninstall.php называют, как у меня может быть он так, чтобы мой плагин смог вымыться, это - пользовательские данные?

Любая справка значительно ценится.

Спасибо.

4
18.10.2013, 21:31
3 ответа

Используя удаление рычаг был бы законен, если бы это работало, но это выводит ту же ошибку как файл удаления. Это имело бы больше возможностей работы, поскольку это загружает основной сменный файл для выполнения функции удаления, но если таксономия больше не регистрируется (и это не, поскольку мы должны деактивироваться прежде, чем удалить), WP не может использовать get_terms.

Адаптация следующей функции из этого ответа Переполнения стека должна сделать работу:

function load_terms($taxonomy){
    global $wpdb;
    $query = 'SELECT DISTINCT 
                                t.name 
                            FROM
                                `wp-cls`.wp_terms t 
                            INNER JOIN 
                                `wp-cls`.wp_term_taxonomy tax 
                            ON 
                             `tax`.term_id = `t`.term_id
                            WHERE 
                                ( `tax`.taxonomy = \'' . $taxonomy . '\')';                     
    $result =  $wpdb->get_results($query , ARRAY_A);
    return $result;                 
} 
5
19.02.2020, 22:10

На основе входа от brasofilo вот то, что я закончил тем, что делал:

function delete_custom_terms($taxonomy){
    global $wpdb;

    $query = 'SELECT t.name, t.term_id
            FROM ' . $wpdb->terms . ' AS t
            INNER JOIN ' . $wpdb->term_taxonomy . ' AS tt
            ON t.term_id = tt.term_id
            WHERE tt.taxonomy = "' . $taxonomy . '"';

    $terms = $wpdb->get_results($query);

    foreach ($terms as $term) {
        wp_delete_term( $term->term_id, $taxonomy );
    }
}

// Delete all custom terms for this taxonomy
delete_custom_terms(LISTING_TAXONOMY);
4
19.02.2020, 22:10

Вызовите свою функцию очистки при удалении плагина через register_uninstall_hook

0
19.02.2020, 22:10
  • 1
    От WP: "Акцент поставился на использование 'uninstall.php' способа удалить плагин, а не register_uninstall_hook". Я считал это в другом месте также, которое является, почему я пытаюсь использовать uninstall.php файл для всех процедур удаления. –  edeneye 17.10.2013, 22:46
  • 2
    я думаю, что не имело бы значения, если бы рычаг удаления работал для решения этого, но он не делает, это выводит ту же ошибку как uninstall.php. спасибо –  brasofilo 18.10.2013, 07:46

Теги

Похожие вопросы