Làm cách nào để truy vấn theo định dạng bài đăng trong WordPress 3.1


10

Tôi đang cố gắng truy vấn tất cả các bài đăng có định dạng bài đăng là 'quote.' Tôi đã thêm các định dạng bài đăng vào hàm.php của mình với

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

Tôi đã chọn 'quote' làm định dạng cho bài đăng trong quản trị viên. Ví dụ cuối cùng trong Taxonomy_Parameter cho thấy cách hiển thị các bài đăng có định dạng 'trích dẫn' nhưng khi tôi chạy nó trong chủ đề của mình thì không có bài đăng nào được trả về. Đây là mã:

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

Khi tôi chỉ truy vấn tất cả các bài viết và địa điểm

echo get_post_format();

trong vòng lặp, nó trả về từ 'quote' ở mặt trước. Ngoài ra, khi tôi var_dump () truy vấn tôi không thấy gì trong mảng về định dạng bài đăng.

Có ai biết nếu có thể truy vấn theo định dạng bài? Nếu vậy thì thế nào?

EDIT - Xem 5 bình luận dưới câu trả lời của Bai Internet: Đây là mã được tìm thấy trên index.php của chủ đề thứ hai mươi của một bản cài đặt mới đang cố gắng trả về các trích dẫn kiểu định dạng. Tôi trả lại 'không' thay vì 'trích dẫn'. Bạn có thể thấy bất cứ điều gì mà tôi nên thay đổi.

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 - Có vẻ như WordPress Codex hiện đã thay đổi và phần Thông số phân loại chỉ được tìm thấy trong bộ đệm của Google.

EDIT 3 - MÃ LÀM VIỆC CUỐI CÙNG

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

Chỉnh sửa hai mươi mười từ lần chỉnh sửa đầu tiên sẽ là ...

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(); ?>

Câu trả lời:


7

Mã này không chính xác! Bạn có

'taxonomy' => 'post-format'

Nhưng nó thực sự cần phải là:

'taxonomy' => 'post_format'

Nếu không có dấu gạch dưới, truy vấn sẽ không hợp lệ. Tôi vừa thử nghiệm điều này trên bản cài đặt WordPress 3.1 của mình sau khi nhổ tóc hàng giờ.

Mong rằng sẽ giúp !!


Cảm ơn bạn rất nhiều vì đã nắm bắt được điều đó. Tôi có thể thề rằng tôi đã sao chép mã gốc trực tiếp từ trang Codex. (Có thể nó đã sai ở đó cùng một lúc.) Nó hoạt động ngay bây giờ. Cùng với việc thay đổi nó thành post_format, tôi cũng cần thay đổi 'terms' => 'quote' trở lại 'terms' => 'post-format-quote'. Đối với bất kỳ ai khác quan tâm xin vui lòng xem Chỉnh sửa 3 của bài viết gốc cho mã cuối cùng.
PNMG

Chắc chắn, rất vui vì tôi đã có thể giúp đỡ. :)
Jared White

2

trong tax_query"điều khoản" chấp nhận mảng, do đó bạn cần đặt post-format-quotemột mảng như thế này:

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

Có ai đã thử nó và làm cho nó hoạt động. Tôi đã thêm phần mảng và nó vẫn không trả về bất cứ thứ gì. Là post-format-quote là sên chính xác để đặt trong mảng?
PNMG

không, không cần phải đặt định dạng bài đăng giống như "trích dẫn" và không định dạng bài đăng định dạng
Bai Internet

Ý bạn là tôi nên đặt 'terms' => mảng ('quote') vì đó là những gì tôi có trích dẫn được định nghĩa như trong hàm add_theme_support? Tôi cũng đã thử điều đó. Vẫn không có may mắn.
PNMG

well 'terms' => mảng ('quote') đang hoạt động ở dạng tôi, hãy thử lặp lại định dạng bài đăng với 'echo get_post_format ();' và xem những gì bạn nhận được
BaiNET

Ok, vì vậy khi tôi lặp lại rằng tôi nhận được "trích dẫn". Trong một khoảnh khắc tuyệt vọng, tôi đã tắt tất cả các plugin và quay lại chủ đề hai mươi mặc định và tạo ra 3 bài kiểm tra, một bài có định dạng trích dẫn. Tôi đã cập nhật tệp tin.php để thêm trích dẫn vào lệnh gọi add_theme_support và index.php được cập nhật để sử dụng mã sau: [xem chỉnh sửa ở cuối bài gốc]
PNMG
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.