WordPressとFlashの連携(検索する)

  • 2009 年 4月 4 日
  • kosuke

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

“WordPressとFlashの連携(検索する)” に コメントはありません

コメントをどうぞ