WordPressとFlashの連携(検索する)
- 2009 年 4月 4 日
WordPressループのクエリ指定、query_posts(’arguments’)は、引数の指定によって検索も出来るようです。ようですっていうのは公式のリファレンスに記載が無いようなのでソース不足。よって動いているよってことで。
渡す引数は、
s = 検索文言
ただクエリを渡す時、そのままs=〜 って渡すと通常の検索結果ページが表示されちゃう。
これはWPの仕組み上あらかじめどのページの時にどのテンプレートで表示するって優先度が決まっているからで、検索結果ページが表示されるってことで、この「s」ってパラメーターがあると最優先テンプレートが検索結果ページと判断されるからだと思います。
固定ページのURL(クエリ無し)を表示 = xmlが表示される = 期待通り
http://sample.nipx.jp/wordpress/?page_id=118
固定ページのURLにクエリにs=〜を渡す = 検索結果ページが表示される
http://sample.nipx.jp/wordpress/?page_id=118&s=nasa
なので、別のキーで検索の値を渡して、query_postsのパラメーターにはsで渡すようにしました。
http://sample.nipx.jp/wordpress/?page_id=118&search=nasa
テンプレートではsearchの値を取ってきます。
その値をquery_postsの引数sの値とします。
'; <?php /* Template Name:cms-search */ ?> <?php header( "Content-Type: text/xml; charset=" . get_option( 'blog_charset' ) ); echo '<?xml version="1.0" encoding="' . get_option( 'blog_charset' ) . '"?' . '>'; ?> <?php $search = $_GET['search']; $posts_per_page = 5; $paged = get_query_var('paged'); $paged = ( $paged ) ? $paged : 1; ?> <?php query_posts("posts_per_page=$posts_per_page&paged=$paged&s=$search"); ?> <?php $numposts = $wp_query->found_posts; ?> <root numposts="<?php echo $numposts ?>" posts_per_page="<?php echo $posts_per_page ?>" paged="<?php echo $paged ?>"> <?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> <entry release="<?php echo c2c_get_custom("Release"); ?>" flv="<?php echo c2c_get_custom("FlV"); ?>" image="<?php echo c2c_get_custom("Image"); ?>" title="<?php echo c2c_get_custom("Title"); ?>" song="<?php echo c2c_get_custom("Song"); ?>" artist="<?php echo c2c_get_custom("Artist"); ?>" > <?php echo c2c_get_custom("Ditail"); ?> </entry> <?php endwhile; ?> <?php else : endif; ?> </root> |
Flashからクエリを投げて検索後のxmlを元に表示します。
Flashと連動 http://sample.nipx.jp/search/#?search=nasa
通常のブログ表示で同じ検索を確認
http://sample.nipx.jp/wordpress/?s=nasa