2011-12-22 30 views
5

Tôi đang sắp xếp bài viết của tôi theo thứ tự abc theo Tiêu đề, như vậy:bài viết loại wordpress theo tiêu đề, bỏ qua các bài báo như “the”, “a”, “an”

<?php 
     { 
     $posts = get_posts($query_string . 
     '&orderby=title&order=asc&posts_per_page=-1'); 
     } 
     get_template_part('loop', 'category'); 
    ?> 

Tôi muốn loại trừ bài viết chẳng hạn như "the", "a" và "an" từ sắp xếp.

Cách tốt nhất để thực hiện điều này là gì?

Cảm ơn!

Trả lời

1

Tôi không biết bất kỳ cách đơn giản để làm điều đó nhưng bạn có thể làm điều này,

Đối với việc đạt được điều này, bạn cần phải thêm một custom meta field vào bài đăng. Đặt tên nó là mytitle (nói).

Đối với bài đăng mới bạn thêm vào, thật đơn giản, bạn phải thêm tiêu đề đã sửa đổi của bạn (loại bỏ, một, từ tiêu đề) trong trường tùy chỉnh mytitle trong trang thêm bài đăng.

Đối với những bài cũ nó là một chút khéo léo, bạn phải viết mã php để lấy tiêu đề của bài remove 'a', 'an', '' từ họ sử dụng php preg_replace và thêm nó vào bảng postmeta của cơ sở dữ liệu wordpress của bạn bằng cách sử dụng một cái gì đó như thế này:

<?php //inside loop 
$query=INSERT INTO xyz_postmeta (post_id, meta_key, meta_value) VALUES ($postid, 'mytitle' $title); 
$wpdb->query('$query'); ?> 

trong đó $ postid là id bài trong vòng lặp và $ title là tiêu đề sửa đổi của bạn.

Bây giờ bạn đã cập nhật tất cả các bài đăng trước với trường tùy chỉnh mytitle.

Bây giờ để hiển thị, bạn phải sử dụng vòng lặp tùy chỉnh (không phải vòng lặp được bao gồm trong chủ đề).

Đây là cách bạn có thể tạo vòng lặp tùy chỉnh cơ bản để hiển thị các bài đăng được sắp xếp theo thứ tự của mytitle.

$querystr = " 
    SELECT wposts.* 
    FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta 
    WHERE wposts.ID = wpostmeta.post_id 
    AND wpostmeta.meta_key = 'mytitle' 
    AND wposts.post_type = 'post' 
    AND wposts.post_status = 'publish' 
    ORDER BY wpostmeta.meta_value ASC 
    "; 

Bây giờ bạn có thể thực hiện truy vấn bằng bất kỳ cách nào bạn muốn. Wordpres cung cấp các phương thức khác nhau để làm như vậy. Here's a link

Ví dụ bạn có thể làm một cái gì đó như thế này

$pageposts = $wpdb->get_results($querystr, OBJECT); 
foreach ($pageposts as $pagepost) 
{ 
    echo $pagepost->post_title; 
    //do other stuff to display content, meta etc.. 
} 
Các vấn đề liên quan