2013-05-07 13 views
8

私はカスタムポストタイプの "staff"を持っています。私はスタッフがページの姓でアルファベット順に表示されるようにする必要があります。私はカスタムメタボックスを使用して、2つのフィールドにファーストネームとラストネームを分割することを回避することを知っていますが、タイトルフィールドを使用するのと同じくらいきれいではないように見えます。WordPress Orderby最終ワードのタイトル

スタッフの「タイプ」タクソノミー属性が要求されたカスタムポストタイプが表示されるショートコードがあります。次に例を示します。

[staff type="local"] 

は、私はいくつかのスタッフは夫婦であり、同様に記載されている自分の名前の両方を持つことになりますので、それは私がしたいタイトルに2番目の単語だと仮定することはできません:「ボブとシンディー・スミス」 。

ここまで私が持っているショートコードです。

function get_staff($atts) { 
    extract(shortcode_atts(array('type' => 'international'), $atts)); 
    $loop = new WP_Query(
     array (
      'post_type' => 'staff', 
      'orderby' => 'title', 
      'staff-type' => $type 
     ) 
    ); 

if ($loop->have_posts()) { 
    $output = '<div class="staff">'; 

    while($loop->have_posts()){ 
     $loop->the_post(); 
     $meta = get_post_meta(get_the_id()); 

     $output .= ' 
      <div class="staff" style="float: left; display: block; border: 1px solid #CCC; margin: 10px; padding: 12px; background-color: #eee;"> 
       <a href="' . get_permalink() . '"> 
        ' . get_the_post_thumbnail($post->ID, 'thumbnail') . '<br /> 
       ' . get_the_title() . '</a><br /> 
       ' . get_the_excerpt() . ' 
      </div> 
     '; 
    } 
    $output .= "</div>"; 
} else { 
    $output = 'No Staff Meet This Criteria Yet.'; 
} 

return $output; 
}; 

add_shortcode('staff', 'get_staff'); 

これは素晴らしいですが、姓のアルファベット順がありません。あなたが提供できるお手伝いをありがとう。これは精巧なショートコードでの私の最初の実際の試みですので、あなたの答えに少し具体的にしてください。

答えて

13

これを試してください。最初のfunctions.php

function posts_orderby_lastname ($orderby_statement) 
{ 
    $orderby_statement = "RIGHT(post_title, LOCATE(' ', REVERSE(post_title)) - 1) DESC"; 
    return $orderby_statement; 
} 

に次のorderby filterを追加して、その

add_filter('posts_orderby' , 'posts_orderby_lastname'); 
    $loop = new WP_Query(
     array (
      'post_type' => 'staff', 
      'staff-type' => $type 
     ) 
    ); 

とループフィルタを削除

remove_filter('posts_orderby' , 'posts_orderby_lastname'); 
+0

後にそれは完璧に動作のようなクエリでそれを使用します。 functions.phpファイル以外の場所に最初の関数を置く方法はありますか?私は移植性のために私のカスタムポストタイプのプラグインを作っています。そして、将来私のクライアントがテーマを変えれば、これは壊れるでしょう。ご協力いただきありがとうございます。 –

+0

この記事では、プラグイン開発について、アクションを追加する例を示しています。http://plugintutorials.blogspot.com/2011/04/wordpress-plugin-tutorial-part-iv-lets.html - それはあなたのプラグインファイルにあります。 – user850010

+0

甘い、それはあまりにも動作します。再度、感謝します! –

関連する問題