Як здійснити запит у форматі публікації у WordPress 3.1


10

Я намагаюся запитувати всі публікації у форматі "цитата". Я додав формати публікацій до своїх функцій.php з

add_theme_support( 'post-formats', array( 'image', 'video', 'gallery', 'quote' ) );

Я вибрав "цитата" як формат для публікації в адміністраторі. Останній приклад в розділі Taxonomy_Parameters показує, як відображати публікації у форматі "цитата", але коли я запускаю їх у темі, жодні повідомлення не повертаються. Ось код:

$args = array(
  'tax_query' => array(
    array(
      'taxonomy' => 'post-format',
      'field' => 'slug',
      'terms' => 'post-format-quote'
    )
  )
);
query_posts( $args );

Коли я просто запитую всі пости та місця

echo get_post_format();

у циклі воно повертає слово "цитата" на передній частині. Крім того, коли я var_dump () запит, я не бачу нічого в масиві про формат публікації.

Хтось знає, чи можна проводити запит у форматі публікації? Якщо так, як?

EDIT - Дивіться 5 коментарів під відповіддю Bainternet: Це код, знайдений у index.php двадцятирічної теми свіжої інсталяції, що намагається повернути цитати формату. Я повертаю "ні" замість "цитати". Ви можете бачити щось, що я повинен змінити.

get_header(); ?>
<div id="container">
  <div id="content" role="main">
    <?php $args = array(
      'tax_query' => array(
        array(
          'taxonomy' => 'post-format',
          'field' => 'slug',
          'terms' => array('quote')
        )
      )
    );
    query_posts( $args );
    if ( have_posts() ) : while ( have_posts() ) : the_post();
      echo get_post_format();
    endwhile; else:
      echo 'no';
    endif;
    wp_reset_query();      
    ?>
  </div><!-- #content -->
</div><!-- #container -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>

EDIT 2 - Схоже, що тепер WordPress Codex змінився, і частина параметрів таксономії знаходиться лише в кеші Google.

РЕДАКТ 3 - ЗАКЛЮЧНИЙ РОБОЧИЙ КОД

$args = array(
  'tax_query' => array(
    array(
      'taxonomy' => 'post_format',
      'field' => 'slug',
      'terms' => 'post-format-quote'
    )
  )
);
query_posts( $args );

Двадцять десять редагувань з першої редакції буде ...

get_header(); ?>
<div id="container">
  <div id="content" role="main">
    <?php $args = array(
      'tax_query' => array(
        array(
          'taxonomy' => 'post_format',
          'field'    => 'slug',
          'terms'    => 'post-format-quote'
        )
      )
    );
    query_posts( $args );
    if ( have_posts() ) : while ( have_posts() ) : the_post();
      the_title();
      echo get_post_format();
      echo '<br />';
    endwhile; else:
      echo 'no';
    endif;
    wp_reset_query();      
    ?>
  </div><!-- #content -->
</div><!-- #container -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>

Відповіді:


7

Цей код неправильний! Ти маєш

'taxonomy' => 'post-format'

Але це дійсно потрібно:

'taxonomy' => 'post_format'

Без підкреслення запит буде недійсним. Я щойно перевірив це на моєму WordPress 3.1, встановивши після витягування волосся на години.

Сподіваюся, що допомагає !!


Дуже дякую, що це зробили. Я міг би поклятися, що скопіював оригінальний код прямо зі сторінки Codex. (Можливо, це було неправильно і свого часу.) Це працює і зараз. Поряд із зміною його на post_format мені також потрібно було змінити 'terms' => 'quota' назад на 'terms' => 'post-format-quota'. Для всіх, хто цікавиться, будь ласка, дивіться редагування 3 оригіналу публікації для остаточного коду.
PNMG

Звичайно, рада, що змогла допомогти. :)
Джаред Білий

2

in tax_query"terms" приймає масив, тому вам потрібно поставити post-format-quoteтакий масив:

$args = array(
  'tax_query' => array(
    array(
      'taxonomy' => 'post-format',
      'field' => 'slug',
      'terms' => array('post-format-quote')
    )
  )
);
query_posts( $args );

Хтось спробував це і змусив його працювати. Я додав частину масиву, і вона все ще нічого не повертала. Чи є пост-формат-цитата правильним слизом, який потрібно помістити в масив?
PNMG

ні, це не вам потрібно ставити формат публікації як "цитата", а не
постформатна

Ви маєте на увазі, що я повинен поставити 'terms' => масив ('quota'), оскільки це те, що у мене є цитата, визначена як в функції add_theme_support? Я також спробував це. Ще не везе.
PNMG

добре 'terms' => array ('quota') працює у мене, спробуйте відлучити формат публікації з 'echo get_post_format ();' і подивіться, що ви отримаєте
Bainternet

Гаразд, коли я лунаю, я отримую "цитату". У хвилину відчаю я вимкнув усі плагіни і перейшов до двадцятиденної теми за замовчуванням, і створив 3 тестових повідомлення, один з форматом цитати. Я оновив файл function.php, щоб додати цитату до виклику add_theme_support та оновив index.php, щоб використати наступний код: [див. Редагувати внизу оригінальної публікації]
PNMG
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.