【Android】R.idをswitch文に入れたらエラーになる

Author:

android開発で、switchのcase文にR.idを入れたらエラーになった。
あれー?以前通っていたような。

調査の結果、ライブラリーにするとR.idが定数じゃなくなる可能性があるらしくて、
case文じゃエラーになると。
if~else~を使えと。

Non-constant Fields in Case Labels – Android Tools Project Site

こっちは間違えてライブラリのチェックを入れただけだったので、外してクリーンしたら治ったけど、
なんだか気持ち悪いですなあ。

【wordpress】ショートコードの追加方法

Author:

これはかなり簡単。
add_shortcode(コード名, 関数名)だけでいい。

例えば
add_shortcode(‘aaa’, ‘func’);
というコードを書けば、

エディタ上で
[aaa]
と書くとfunc関数が呼ばれるようになります。

引数を渡したい場合は

extract(shortcode_atts(array(
‘num’ => 0,
), $atts));

こんなコードを入れて、
[aaa num=100]
とすればOKです。

【wordpress】WP_Queryって何なのさ

Author:

ブログのトップページには最新の投稿がずらりと並びますよね。
その並びの中にもう一つループを追加したり、
そのループを書き換えたりするクラスがWP_Queryというものです。

カテゴリー一覧とかウィジェットにも使われていますよね。

使い方は
$query = new WP_Query($args);
こんな感じ。
argsに入れたい条件を記入します。

詳細はcodexにもあるけど、一つなら=でつないで書く。
new WP_Query(‘cat=4’);
二つならarrayにする。
new WP_Query(array(‘cat’=>4, ‘tag’=>’game’);

んで、投稿を取得する際のhave_post、the_postに注意。
have_postやthe_postはクラスのメンバにしないといけません。
しかしthe_titleやthe_contentはクラスのメンバにする必要はありません。

while ( $query->have_posts() ){
$query->the_post();
the_title();
}

こんな感じになります。the_postにクラス忘れるとメインループのデータが取得されてしまいます。
WP_Queryのthe_titleとかやってもエラーになります。

【wordpress】カスタム投稿と特定のタグを含む通常の投稿を抜き出すSQL文

Author:

WP_Queryに入れる条件がANDになっていてpost_typeとcategory両方設定させたらNOT FOUNDになるので、
SQLクエリ書いてみた。

select p.id
from
wp_posts p,
wp_term_relationships rel,
wp_terms t,
wp_term_taxonomy tax
where
post_type = ‘カスタムポストのslug’
or (
t.slug = ‘タグのslug’
and t.term_id = tax.term_id
and rel.term_taxonomy_id = tax.term_taxonomy_id
and p.id = rel.object_id
)
group by p.id

タグと投稿のつながりが遠いw
間に二つもテーブル挟むのね。。

まあともかく、これでIDが取得できるので、WP_Postのpost__inに入れればいい。

global $wpdb;
$post_ids = $wpdb->get_col( $wpdb->prepare( ”
select p.id
from
wp_posts p,
wp_term_relationships rel,
wp_terms t,
wp_term_taxonomy tax
where
post_type = ‘games’
or (
t.slug = ‘t_game’
and t.term_id = tax.term_id
and rel.term_taxonomy_id = tax.term_taxonomy_id
and p.id = rel.object_id
)
group by p.id
“));
$query_args = array( ‘post__in’ => $post_ids, ‘post_type’ => array(‘post’, ‘カスタム投稿のslug’) );
$my_query = new WP_Query( $query_args );
こんな感じかな。