Функция wordpress get_terms не работает в моем плагине - PullRequest
0 голосов
/ 11 декабря 2011

Привет снова из далекого места.

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

$terms = get_terms($taxonomy , 'hide_empty=0');
print_r($terms);
$count = count($terms);
if ( $count > 0 ){
echo "<ul>";
foreach ( $terms as $term ) {
  echo "<li>" . $term->name . "</li>";

}
echo "</ul>";

wp возвращает сумасшедшую ошибку, которая говорит: НЕВЕРНАЯ ТАКСОНОМИЯ:

WP_Error Object
(
    [errors] => Array
        (
            [invalid_taxonomy] => Array
                (
                    [0] => Invalid Taxonomy
                )

        )

    [error_data] => Array
        (
        )

)

очень интересно, что вы знаете, когда я использую приведенный выше код в single.php, я не вижу никакой ошибки, и она отлично работает.

кто-нибудь, пожалуйста, помогите мне!

Ответы [ 4 ]

2 голосов
/ 15 апреля 2014

Решено

Я пытаюсь использовать:

get_terms( 'event_category', array('hide_empty'=>FALSE) );   

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

add_action( 'init', 'register_features_taxonomy_event_category' );   

Но теперь это решено с помощью:

add_action( 'after_setup_theme', 'register_features_taxonomy_event_category' );
1 голос
/ 29 апреля 2016

На самом деле добавить нечего, кроме как прояснить: get_terms() не работает в "admin_init" action hook!

Мне понравилось bizzr3 . Просто поместите мой код здесь, потому что я немного запутался с кодом bizzr3:

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

, затем просто вызовите load_terms() в вашей функции "admin_init":

//get all terms from taxonomy Category
  $terms = load_terms('category');

и спасибо, работает как шарм.

1 голос
/ 04 апреля 2012

get_terms возвращает неверную ошибку таксономии, потому что: у вас есть пользовательская таксономия, зарегистрированная в хуке "init" так что в wp-admin это не работает -> ваша таксономия регистрируется после того, как вы вызываете "get_term" https://wordpress.stackexchange.com/questions/13480/get-terms-return-errors/13482#13482

1 голос
/ 12 декабря 2011

О боже ... я решаю это с помощью сумасшедшего временного решения. Смотрите ниже:

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;                 
} 

Как вы можете видеть, я использую запрос, но я не могу применить этот плагин к моей команде программистов. Я все еще ожидаю правильного решения / использования функции get_terms в плагинах wordpress.

С уважением.

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