Mysql
 sql >> база данни >  >> RDS >> Mysql

Не може да се получи обект на категория в някои шаблони на WooCommerce

Не можете да използвате get_category() или get_term() директно с лична карта навсякъде. Трябва да използвате повече аргументи, изброени тук (вижте примера по-долу) . Относно шаблоните мисля, че също зависи от показаните продукти (ако имат тази категория или подкатегория).

Други полезни функции на WordPress:
За да извлечете име на категория въз основа на ID на категория, ще трябва да използвате get_the_category_by_ID() .
Можете също да извлечете идентификатора по име на категория и ще използвате get_cat_ID( 'cat_name' ) .

Изброяване на продуктови категории и подкатегории с get_category() (пример) :

Ето пример за функция, базирана на <силна>тази тема , който ще изброи всички продуктови категории и подкатегории (навсякъде) :

function products_cats_subcats(){
    $taxonomy     = 'product_cat';
    $orderby      = 'name';
    $show_count   = 0;      // 1 for yes, 0 for no
    $pad_counts   = 0;      // 1 for yes, 0 for no
    $hierarchical = 1;      // 1 for yes, 0 for no
    $title        = '';
    $empty        = 0;

    $args = array(
        'taxonomy'     => $taxonomy,
        'orderby'      => $orderby,
        'show_count'   => $show_count,
        'pad_counts'   => $pad_counts,
        'hierarchical' => $hierarchical,
        'title_li'     => $title,
        'hide_empty'   => $empty
    );
    $all_categories = get_categories( $args );
    echo '<ul>';
    foreach ($all_categories as $cat) {
        if($cat->category_parent == 0) {
            $category_id = $cat->term_id;
            echo '<li><a href="'. get_term_link($cat->slug, 'product_cat') .'">'. $cat->name .'</a></li>';

            $args2 = array(
                'taxonomy'     => $taxonomy,
                'child_of'     => 0,
                'parent'       => $category_id,
                'orderby'      => $orderby,
                'show_count'   => $show_count,
                'pad_counts'   => $pad_counts,
                'hierarchical' => $hierarchical,
                'title_li'     => $title,
                'hide_empty'   => $empty
            );
            $sub_cats = get_categories( $args2 );
            echo '<ol>';
            if($sub_cats) {
                foreach($sub_cats as $sub_category) {
                    echo  '<li><a href="'. get_term_link($sub_category->slug, 'product_cat') .'">' . $sub_category->name .'</a></li>';
                }
            }
            echo '</ol>';
        }
    }
    echo '</ul>';
}

За да го използвате, просто го поставете където искате:<?php products_cats_subcats() ;?>

Това ще покаже всички ваши категории и подкатегории, йерархично подредени по Име , със съответната връзка за всяка категория или подкатегория.

След това сега ще можете да изградите свои собствени функции, които отговарят на вашите нужди...

Справка:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. изберете двата последни реда за всеки потребител, за да получите разликата от колона (MySQL)

  2. Как да конвертирам този подготвителен израз за използване на заместители в Wordpress $wpdb?

  3. Свързване на таблици от две бази данни с помощта на codeigniter

  4. Защо Java не може да се свърже с MySQL 5.7 след последната актуализация на JDK и как трябва да се коригира? (ssl.SSLHandshakeException:Няма подходящ протокол)

  5. Laravel 5:синхронизиране на допълнително поле чрез опорна точка