2011-12-22 5 views
5

Я сортировка моих сообщений в алфавитном порядке по заголовкам, например, так:сортировать сообщения WordPress по названию, игнорировать статьи, как «в», «а», «»

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

Я хотел бы, чтобы исключить статьи таких как «the», «a» и «an».

Что было бы лучшим способом достичь этого?

Спасибо!

ответ

1

Я не знаю, какой-нибудь простой способ сделать это, но вы можете сделать это,

Для достижения этой цели необходимо добавить custom meta field к столбу. Назовите его mytitle (скажем).

Для новых сообщений вы добавляете, это просто, вы должны добавить измененный заголовок (удаление, a, из названия) в пользовательском поле mytitle на странице добавления сообщений.

Для старых сообщений это немного сложно, вы должны написать код PHP для получения названия почтового Вытащите «а», «», «The» из них с помощью PHP preg_replace и добавить его в PostMeta таблице базы данных WordPress используя что-то вроде этого:

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

где $ это сообщения дан идентификатор сообщения в заголовке цикла и $ ваш модифицированный заголовок.

Теперь вы обновили все предыдущие сообщения с пользовательским полем mytitle.

Теперь, чтобы отобразить, вы должны использовать настраиваемый цикл (а не цикл, включенный в тему).

Вот как вы можете создать базовый настраиваемый цикл для отображения сообщений, отсортированных в порядке 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 
    "; 

Теперь вы можете выполнить запрос любым способом. Wordpres предоставляет различные методы для этого. Here's a link

Например, вы можете сделать что-то вроде этого

$pageposts = $wpdb->get_results($querystr, OBJECT); 
foreach ($pageposts as $pagepost) 
{ 
    echo $pagepost->post_title; 
    //do other stuff to display content, meta etc.. 
} 
Смежные вопросы