2011-04-25 2 views
0

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

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

  • Нью-Йорк
  • Chicago
  • Texas
  • ... и т.д.

Я тогда несколько категорий,

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

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

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

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

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

Например.

<?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() он будет печатать «Нью-Йорк» с пробелом между словами «Новый» и «Йорк». Это не работает.

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

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

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

спасибо.

ответ

0

В параметре 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 

Например, вы можете получить id с $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

Смежные вопросы