Показать сообщения в категории с тегом (Wordpress) - PullRequest
0 голосов
/ 25 апреля 2011

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

Например, у меня естьсообщения по названию города,

  • Нью-Йорк
  • Чикаго
  • Техас
  • ... и т. д.

Iзатем есть несколько категорий,

  • Новости
  • События
  • Объявления
  • ... и т.д.

Для каждогосообщение, которое я создаю для одной из этих категорий, затем назначаю тег записи, соответствующий названию города.

Например, если у меня есть новость для Нью-Йорка, я выбираю категорию «Новости» и присваиваю посту тег «Нью-Йорк».

Когда я нахожусь в пользовательском шаблоне публикациистраница для Нью-Йорка Я хочу получить сообщения, связанные с категорией новостей, которые имеют тег name = New York (название сообщения).

Однако моя дилемма заключается в том, что я не могу понять, как динамически генерироватьимя тега из заголовка поста.

Например.

    <?php 
                            $tag = wp_title('', FALSE);
            query_posts( 'tag=' . $tag . '' );

            if ( have_posts() ) while ( have_posts() ) : the_post();

                    echo '<li>';

                        the_title();

                    echo '</li>';

             endwhile; 

            wp_reset_query(); ?>

Но при получении имени тега с помощью wp_title () будет напечатано «New York» с пробелом между словами «New» и «York».Это не работает.

Чтобы заставить его работать, он должен быть «Нью-Йорк» с дефисом на месте.Но я не могу понять, как генерировать имя тега на основе заголовка с дефисами вместо пробелов.

Надеюсь, в этом есть смысл.

Я ценю любые усилия по оказанию помощи.

Спасибо.

1 Ответ

0 голосов
/ 26 апреля 2011

В функции query_posts параметр tag относится к слагу, а не к имени.К сожалению, функция query_posts не может принять имя тега;Тем не менее, есть замечательная функция WP, которая может выступать в качестве посредника для нас.Чтобы получить информацию тега на основе имени, вы можете использовать это:

$term = get_term_by('name', $name_of_tag, 'post_tag'); 

$term будет объектом со следующей информацией:

term_id
name
slug
term_group
term_taxonomy_id
taxonomy
description
parent
count

Например, вы можете получить идентификатор с помощью $term->term_id.Итак, сложив все это вместе, вы сможете выполнить то, что вам нужно, с помощью:

$tag_name = wp_title('', FALSE);
$term = get_term_by('name', $tag_name, 'post_tag');
query_posts( 'tag_id=' . $term->term_id);

Я не проверял, что на самом деле возвращает wp_title, поэтому я не знаю, правильно ли это возвращает заголовок, но я тебе доверяю;)

Источники:

http://codex.wordpress.org/Function_Reference/WP_Query

http://codex.wordpress.org/Function_Reference/get_term_by

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