WordPress 特定の投稿のあるカスタムフィールドを取得する

WordPress

WordPress 特定の投稿のあるカスタムフィールドを取得する

たとえば、投稿IDが18のinfoというカスタムフィールドが取得したい場合

 get_post_meta(18, 'info', true); 

で取得できます。
最後の引数は、配列で返すか、値で返すか、で値の場合trueを入れます。

サンプルです。

 //customというカスタムフィールドの値があれば、カスタムフィールドを表示
 
 $meta_values = get_post_meta($id, 'custom', true);
 if($meta_value){
  echo $meta_value;
 }
 

WordPress 特定のカテゴリの投稿で、子孫カテゴリ以外を取得する

WordPress

WordPress 特定のカテゴリの投稿で、子孫カテゴリ以外を取得する

WordPressには

 query_posts()

という便利な関数があり、これで投稿を取得することができます。
普通に特定のカテゴリ内の投稿を取得したい場合は

 query_posts( 'cat=4' );

とすればよいのですが、これだとカテゴリID4以下の子孫カテゴリの全部の投稿をとってきてしまいます。

子孫カテゴリがいらない場合は、

 query_posts('category__in=4');

というように、’category__inというパラメーターを指定します。

アンダースコア2つなので、注意しましょう!

WordPressを利用したサイト構築はこちらまで

WordPress 投稿を管理者がレビューしてから投稿させたい

WordPress

WordPress 投稿を管理者がレビューしてから投稿させたい

WordPress 3.3.1

WordPressを会社サイトなどで利用していると、たとえば部下が記事を書いて、上司がそれを承認してから公開したい、などの要望があると思います。

その場合

  1. 部下を「寄稿者」としてユーザー登録
  2. 上司は「管理者」にしておきます。
  3. 部下がログインして、投稿し、「レビュー待ちとして送信」をクリックすると、後で上司がレビューして、承認、ということができます。ただ、メールなどで通知がいかないのが難点。(送信)、などと書いてあるので、いかにもメールなどで通知が行きそうですが。

メール通知をしたい場合は、プラグインなどで対応できるようです。
http://ja.forums.wordpress.org/topic/3176

WordPress 投稿を日付順の降順で取得

WordPress

WordPress 投稿を日付の降順(新しい順)で取得

query_postsを利用する方法ももちろんありますが、ここではquery_postsをもうすでに使用してしまったなどで使えない場合のために、get_posts関数を利用する方法を書いておきます。

たとえば、カテゴリー18の投稿を5件、新しい順に取得して表示するサンプルです。

 <div class="new_info">
  <?php
   //query_posts( 'cat=18&orderby=date&posts_per_page=5' );
 
    $args = array('category'=>18,
          	'numberposts' => 5,
 		'order'=>'DESC',
 		'orderby'=>'post_date');
 										
 	$posts = get_posts( $args );
 	
 	if ($posts) :
    ?>
  <table class="news">
    <?php foreach  ( $posts as $post ): setup_postdata($post); ?>
    	  <th><?php echo get_post_time('d M Y'); ?></th>
 	  <td><div>

<?php $the_title = get_the_title(); echo ($the_title== "") ? 'タイトルなし' : $the_title; ?></a> </div></td> </tr> <?php endforeach;; ?> </table> <?php endif; wp_reset_query(); ?> </div>

get_postsについて
http://wpdocs.sourceforge.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/get_posts

ちなみに、query_postsはループをネストして使えない、というのは下記に書いてあります。

Secondary Loops

To create secondary listings (for example, a list of related posts at the bottom of the page, or a list of links in a sidebar widget), try making a new instance of WP_Query or use get_posts().

http://codex.wordpress.org/Function_Reference/query_posts

WordPress 投稿の順番を変更する

WordPress

WordPress 投稿の順番を変更する

WordPress3.2.1

投稿(Post)でサイトを作ると、カテゴリなどの制御ができて楽ですが、順番を変更するのがめんどうですよね。

最初は関数を使ってなんとかしようとしていましたが、なんかかゆい所に手が届かない感じです。

トライした方法①

  • query_postsのパラメーターで何とかする


この方法だと
‘ID’,’author’,’title’,’date’,’modified’,’parent’,’rand(ランダム)’,
‘comment_count(コメント数)’ ,’menu_order(Page Orderの順番)’,
‘meta_value’,’meta_key=keyname’,’meta_value_num’
でしかソートできません。

‘meta_value’,’meta_key=keyname’を複合的に利用して作ると、カスタムフィールドを設定すれば並び替えができます。

これでOKかと思いきや、この取得方法だと、カスタムフィールドを設定しないと取得してくれないんですね。
すでに大量の投稿があるWordPressサイトとかだとちょっと無理だと思います。

そこで、恣意的に順番を設定するために、slugで順番を設定できる次のプラグインを導入するのが一番よさそうです。

Custom Post Order
http://wpdocs.sourceforge.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/query_posts

プラグインを普通に導入し、
ダッシュボード>設定>Custom Post Order Options
から設定が可能です。

ソートする項目、降順か昇順かの選択、適用するカテゴリを選択します。
適用するカテゴリが選べるのがいいですね!
かゆいところに手が届く、親切プラグインです。[smile]