cris
  • 0
Новичок

Отображать пользовательские таксономии, ограниченные пользовательским типом записи?

  • 0

у меня глупая ситуация, когда я почему-то не могу найти решение и мне действительно нужна помощь!

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

Я создал пользовательскую таксономию под названием «Теги». Эта таксономия применяется к сообщениям, страницам, фотографиям и событиям… так что в основном вы можете присвоить тег всему, и вы можете выбрать везде из тегов, которые используются в другом месте (например, если вы даете какие-то теги в событиях, то вы может позже выбрать те же теги в фотографиях).

Идея состоит в том, чтобы показать везде сопутствующие вещи. Так что, если вы участвуете в событии, вы увидите на боковой панели соответствующие новости, фотографии, даже записи на странице… и так далее…

ТЕПЕРЬ я хочу отображать в разделе «Фото» только те теги, которые уже использовались в фотографиях пользовательского типа публикации. Не все (в событиях есть теги, которые никогда не использовались на фотографиях). Таким образом, можно было выбрать просмотр только фотографий на основе тега…

У меня еще нет кода… хотя я не новичок в wordpress, на данный момент я даже не знаю, с чего начать.

как можно отобразить список тегов, которые являются пользовательской таксономией, ограниченной пользовательским типом записи?!

Любое предложение было бы очень приятно!

Share
  1. Почему вы создаете таксономию под названием «теги», когда wp уже имеет функции «теги» по умолчанию.

    • 0
    • tnx за ваш ответ, я знаю, что WordPress имеет теги по умолчанию, но теги по умолчанию не отображаются в пользовательских типах сообщений. или почему-то я не смог этого сделать… поэтому я просто создал пользовательскую таксономию и назначил ее всему, что хочу. обратите внимание, для проекта очень важно, чтобы теги были общими для разных типов записей.

      • 0
    • Теги работают для пользовательских типов сообщений, вы не должны называть пользовательскую таксономию в честь того, что уже используется WordPress, используйте уникальное имя, иначе вы, вероятно, столкнетесь с проблемами.

      • 0
    • ааа, спасибо за этого Даниэля!

      • 0
    • tnx, за ваш ответ, но, к сожалению, это мне не очень помогает… но не волнуйтесь, я уже начал, и мне удалось каким-то образом получить идентификаторы из тегов, которые используются в пользовательском типе сообщений… я также смог напечатать имя тега на основе идентификатора, но почему-то у меня проблемы со ссылками… get_tag_link($tagid) ничего не возвращает в моем случае…

      • 0
  2. Чтобы использовать встроенную функциональность тега с пользовательским типом записи, вам нужно добавить этот аргумент при регистрации вашего типа записи:

    'taxonomies' => array( 'post_tag' ),
    

    Итак, чтобы зарегистрировать события типа сообщения, вы должны сделать (например):

    register_post_type( 'events', array(
        'show_ui' => true,
        'taxonomies' => array( 'post_tag' )
       // etc ...
    ) );
    
    • 0
  3. Итак, я разобрался со своей проблемой и придумал эту функцию

    function getCustomTaxonomy($posttype,$taxonomy) { $custompostsid = get_posts(‘post_type=’.$posttype);

    $i=0;
    $j=0;
    
    foreach ($custompostsid as $post)
    {  
        setup_postdata($post);
    
        $customtags = wp_get_post_terms( $post->ID , $taxonomy);
    
            foreach ($customtags as $tag) 
            {
                $tagid[$j]=$tag->term_id; 
                $j++;
            }
    
        $i++;
    }
    
    $alltagsid=array_unique($tagid);
    
    $blogurl=get_bloginfo('url');
    
    $nummberofelements=count($alltagsid);
    
    $k=0;
    
    foreach ($alltagsid as $onetagid)
    {
    
     $array = get_term_by('id', $onetagid, $taxonomy, 'ARRAY_A'); 
     $tagname=print_r($array[name],true);
     $tagcount=print_r($array[count],true);
     $taglink=$blogurl."/?".$taxonomy."=".$tagname."&type=".$posttype;
    
     echo "<a class='taxonomy-link' href='".$taglink."'>";
         echo $tagname." (".$tagcount.")";
     echo "</a>";
     $k++;
    
     if ($k<$nummberofelements) echo ", ";
    }
    

    }

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

    не стесняйтесь, оптимизируйте код;)

    с уважением

    • 0

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

You must login to add an answer.