fuxi
  • 0
Новичок

Получить все теги из категории

  • 0

я показываю все сообщения по категориям в своем шаблоне, и мне было интересно: можно ли получить список всех тегов, используемых этой категорией?

я только узнал, как сделать выпадающий список тегов, но это из всех статей, я еще не мог узнать, как фильтровать его по категориям — есть идеи?

вот ссылка http://wphacks.com/how-to-display-wordpress-tags-dropdown-menu/

спасибо заранее

Share
  1. Здесь показано, как получить теги для категории: wprecipes.com/…

    • 0
  2. Поздний ответ

    Для этого есть get_terms() здесь. Нет необходимости в каких-либо пользовательских запросов.

    • 0
  3. Может быть, это поздно, но думает, что это поможет кому-то. Это код, который дает вам список тегов для определенной категории

    $terms = get_terms( array(
    'taxonomy' => 'post_tag',
    'hide_empty' => false,
    ) );
    
    • 0
  4. 10 лет спустя, но все же лучше, чем никогда…

    Категории и теги не привязаны друг к другу. Они оба связаны с постом/продуктом. Поэтому вам нужно запросить все сообщения/продукт и получить их идентификаторы, чтобы затем вы могли запросить теги, где идентификатор продукта/сообщения находится в этом наборе идентификаторов.

    См. приведенный ниже запрос для сообщений WordPress:

    SET @CategoryByID = 1; -- set correct category ID
    -- SET @CategoryByName = 'Politics'; -- set correct category name
    
    SELECT DISTINCT t.* FROM wp_posts AS p
    LEFT JOIN wp_term_relationships tr ON p.ID = tr.object_id
    LEFT JOIN wp_term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id
    LEFT JOIN wp_terms t ON t.term_id = tt.term_id
    WHERE p.post_type="post" -- <<< for wordpress post type
    AND p.post_status = 'publish'
    AND tt.taxonomy = "post_tag" -- <<< for wordpress post tags
    AND p.ID IN
        (SELECT p.ID FROM wp_posts AS p
        LEFT JOIN wp_term_relationships tr ON p.ID = tr.object_id
        LEFT JOIN wp_term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id
        LEFT JOIN wp_terms t ON t.term_id = tt.term_id
        WHERE p.post_type="post" <<< for wordpress post type
        AND p.post_status = 'publish'
        AND tt.taxonomy = "category" -- <<< for wordpress post category
        AND tt.term_taxonomy_id = @CategoryByID -- <<< search category by id (use one)
        -- AND t.name = @CategoryByName  -- <<< search category by name (use one)
        ORDER BY p.ID)
    ORDER BY p.ID
    

    См. приведенный ниже пример запроса для продуктов WooCommerce:

    SET @CategoryByID = 18; -- set correct category ID
    -- SET @CategoryByName = 'T-SHIRT'; -- set correct category name
    
    SELECT DISTINCT t.* FROM wp_posts AS p
    LEFT JOIN wp_term_relationships tr ON p.ID = tr.object_id
    LEFT JOIN wp_term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id
    LEFT JOIN wp_terms t ON t.term_id = tt.term_id
    WHERE p.post_type="product" -- <<< for woocommerce post type
    AND p.post_status = 'publish'
    AND tt.taxonomy = "product_tag" -- <<< for woocommerce tags
    AND p.ID IN
        (SELECT p.ID FROM wp_posts AS p
        LEFT JOIN wp_term_relationships tr ON p.ID = tr.object_id
        LEFT JOIN wp_term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id
        LEFT JOIN wp_terms t ON t.term_id = tt.term_id
        WHERE p.post_type="product"
        AND p.post_status = 'publish'
        AND tt.taxonomy = "product_cat" -- <<< for woocommerce products
        AND tt.term_taxonomy_id = @CategoryByID -- <<< search category by id (use one)
        -- AND t.name = @CategoryByName  -- <<< search category by name (use one)
        ORDER BY p.ID)
    ORDER BY p.ID
    
    • 0

Оставить ответ

You must login to add an answer.