Home > ActionScript3.0 | Event | Progression | Works > ProgressionとWordPressの連携

ProgressionとWordPressの連携

WordPressでも(MTと)同じようなことが出来ないかな? と思って、あれこれググっていました。

★参考にさせていただいた記事

5ive.infoさんの記事を見て、「なるほど〜、こうすればWordPressでもXMLが出来るのね!」と理解。

WordPress Codex日本語版の方にも、詳しくページテンプレートの作成方法が掲載されていたので、理解をさらに深めました。

この2つの記事を参考にさせて頂き、PRML形式のXMLを吐き出すページテンプレートを作ってみました。

PRML形式のXMLを吐き出すテンプレート

<?php /*
Template Name: scenedataXML
*/ ?>
<?php header('Content-Type: text/xml; charset='.get_option('blog_charset'), true); ?>
<?php echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?>
<?php echo '<prml version="2.0.0" type="text/prml">'; ?>

<?php query_posts("order=ASC"); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<scene name="<?php echo c2c_get_custom('scene_name'); ?>" cls="flabaka.scenes.ImageScene" title="<?php echo the_title(); ?>">
<num><?php echo c2c_get_custom('scene_name'); ?></num>
<cap><?php echo the_title(); ?></cap>
<path><?php echo the_content_rss(); ?></path>
<date><?php echo the_date('Y-m-d'); ?></date>
<category><?php $cat = get_the_category(); $cat = $cat[0]; { echo $cat->cat_name;} ?></category>
</scene>
<?php endwhile; endif; ?>
</prml>

11行目に、c2c_get_custom(‘scene_name’);という見慣れないものがありますが、これは後ほど解説します。

このファイルを保存して、wp-content>themes>使用しているテーマのフォルダに入れます。

次に、テンプレートファイルを用いてXMLを吐き出すフィードを作成してみます。

ページからフィードを作成する

メニューからページに移動して、現在あるAbountページを編集。もしくは新規追加を行います。

名前は適当に(僕はscenedataXML)つけます。

次に画面右の属性のテンプレートを見てください。

アップロードしたテンプレートを選択

通常はデフォルトテンプレートが選択されています。

先程、作成したテンプレートをテーマフォルダにアップしました。するとリストの中から選択出来るようになるので、scenedataXMLを選択しておきます。

で、保存しておきます。

記事を投稿する

次に記事を投稿します。

MTの時と同様に、タイトル、カテゴリなどを入力していきます。

記事を書くフィールドで、画像をアップロードします。(アップロード先はimagesフォルダにしてあります)

WPで画像をアップロード

その際、ファイルのURLボタンを押し、アップロードするファイルのパスも挿入されるようにしておきます。

すると、こんな感じで表示されます。


<a href="http://localhost/wordpress/wp-content/images/2009/07/image3.jpg">
<img src="http://localhost/wordpress/wp-content/images/2009/07/image3.jpg" alt="image3"
title="image3" width="1024" height="768" class="alignnone size-full wp-image-22" /></a>

MTの時は、ファイルのパスのみを簡単に取得出来ますが、WordPressではちょっと手間が掛かります。(単に僕が知らないだけかもしれませんが…)

コードを以下の様に、ファイルのパスのみを残し、あとは消去してしまいます。

http://localhost/wordpress/wp-content/images/2009/07/image3.jpg

で、次に、sceneの属性であるnameをどこで設定しようか迷ったんですが、今回はカスタムフィールドを使うことにしました。

カスタムフィールドの箇所に、以下のように設定します。

カスタムフィールドを使用

今回はscene_nameというフィールドを新たに設定し、値にmusiumと入力してみました。

ちなみにですが、一度作成したカスタムフィールドは、次回からリストで選択可能になります。

ここまで終わったら、公開ボタンを押しておきます。

カスタムフィールドの値を取得する

設定したカスタムフィールドの値を取得するには、どうするか? ですが、『カスタムフィールドの使い方』(WordPress Codex 日本語版)にいろいろ書いてあります。

でも、もっと(サクッと)簡単に値を取得出来ないものか? と思って、プラグインを探していたら、ありました。

Get Custom Field Values』というプラグインです。

ダウンロード→解凍→プラグインフォルダにアップ→プラグイン管理画面から、プラグインを有効にしておきます。

あとは、カスタムフィールドの値を表示させたい箇所で、c2c_get_custom(‘カスタムフィールド名’);としてあげれば、自動的に設定したカスタムフィールドの値を取得してくれます。(先程の場合だと、musiumが表示されます)

<?php /*
Template Name: scenedataXML
*/ ?>
<?php header('Content-Type: text/xml; charset='.get_option('blog_charset'), true); ?>
<?php echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?>
<?php echo '<prml version="2.0.0" type="text/prml">'; ?>

<?php query_posts("order=ASC"); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<scene name="<?php echo c2c_get_custom('scene_name'); ?>" cls="

先のソースで、このように記述していたのは、その為です。

では、ページから、先程作成したscenedataXMLを表示させてみます。

フィードを表示してみる

scenedataXMLのページに移動します。

すると、タイトルの下にこんなものが表示されていると思います。

フィードのパス

ここで、ページを表示ボタンを押すと、投稿した記事からPRML形式のXMLを生成したものが表示されます。

で、ページの画面に戻って、パーマリンクというものがあるかと思います。(パーマリンクを変更せず、デフォルトのまま使っています)

これを使って、Progressionで表示させてみます。

Progressionで表示させてみる

protected override function _onLoad():void {
    // 実行したいコマンドを登録します。
    addCommand(
        new LoadURL( new URLRequest( "http://localhost/wordpress/?page_id=6" ) )
        .after( function():void {
            trace( this.data ); //trace(this.latestData)でもOK!
        } )
    );
}

こんな感じで、読み込んであげます。すると、XMLの値が取得出来ます。

Progression 3.1.62
Copyright (C) 2007-2009 taka:nium

<?xml version=”1.0″ encoding=”UTF-8″?>
<prml version=”2.0.0″ type=”text/prml”>

<scene name=”airport” cls=”flabaka.scenes.ImageScene” title=”空港”>
<num>airport</num>
<cap>空港</cap>
<path>http://localhost/wordpress/wp-content/images/2009/07/image1.jpg
</path>
<date>2009-07-13</date>
<category>建物</category>
</scene>

<scene name=”station” cls=”flabaka.scenes.ImageScene” title=”駅”>
<num>station</num>
<cap>駅</cap>
<path>http://localhost/wordpress/wp-content/images/2009/07/image2.jpg
</path>
<date>2009-07-14</date>
<category>建物</category>
</scene>

<scene name=”musium” cls=”flabaka.scenes.ImageScene” title=”美術館”>
<num>musium</num>
<cap>美術館</cap>
<path>http://localhost/wordpress/wp-content/images/2009/07/image3.jpg
</path>
<date>2009-07-15</date>
<category>建物</category>
</scene>

</prml>

あとはこれを使って、ほげほげしてあげればOK!

こんな感じで、WordPressでもMTと同じ様に出来ました。

WCANの際、Unknown Qualityのll_koba_llさんに、「画像のパスですが、サムネイル画像のパスとかもいけます(設定可能です)かね?」とのご質問を受けました。

まだ試してはいませんが、カスタムフィールドを使って、そこにサムネイル画像のパスを設定して、テンプレート側にも追記してあげれば、(表示用とサムネイル用の画像のパスを分けて表示させるのは)問題ないんじゃないのかなぁ…と思っています…

僕は大きい画像一枚をアップして、それをProgressionのCastImageLoaderで、表示用とサムネイル用に別々に読み込んで使っていました。

WordPressは画像をアップすると、自動的にサムネイル画像を作成してくれるので、サムネイルはそっちを使ってあげた方が、パフォーマンス的にも良さそうですね。

今度はそれに挑戦してみようと思ってます。

以上が僕のWCANネタです。

Comments:12

yumiko 09-09-01 (火) 19:24

いつもFlashの技術ネタを興味不覚拝見させていただいています。
daigoと申します。

今回のエントリで、Wordpressで出力されたxmlを読むこむとこまではできました。
ありがとうございます!

そこで、ほげほげしてあげてというところを、もう少し解説頂く事は可能でしょうか?

Progression初心者で、試行錯誤している次第です。

いま実験しているんですが、Wordpressで、カテゴリを複数つくり、そのカテゴリ(親、子、曾孫含み)を
Progressionのシーンとリンクさせ、カテゴリを作成すると、Flashの方で自動生成できないものでしょうか?

ぶしつけな質問でもうしわけありませんが、アドバイスいただければ幸いです。

あつのすけ 09-09-02 (水) 9:53

>daigoさん

コメントありがとうございます。

★ほげほげしてあげる

Feedを読み込んだ後で、サムネイル画像用のクラスをfor文を使って、xmlの要素数の数だけ作成 しています。
その際、initObjectにxmlの要素を渡してあげています。

for ( var i:uint = 0; i < numScenes; i++ ) {
  var _xmlData:XMLList = new XMLList( scenes[i].sceneInfo.data );
  _obj = XMLUtil.xmlToObject( _xmlData );
  var imgBtn:ThumImage = new ThumImage( { imgUrl:_obj.path, tips:_obj.cap, sceneId:scenes[i].sceneId } );

こんな感じでしょうか?

こうすればThumImage側にxmlの要素が渡るので、そちらでtipsの値をツールチップに表示させるなり、imgUrlを使って、画像を読み込んであげるなりしてあげれば、いいかと思います。

★カテゴリ要素とリンクさせる

WPのカテゴリとProgressionの連携というのは、5ive infoのsimoさんが素敵なエントリをしてくださっています。

http://www.5ive.info/blog/archives/592

そちらを参考になされば、大丈夫かと思います。

kiri_fla 10-01-19 (火) 19:07

いつも拝見させていただいてます。
いまさらながらwordpressとprogressionの連携を勉強しているのですが、分からずコメントさせていただきました。

wordpressにてテンプレートのphpを作成して管理画面にて新規ページを作成してテンプレートを選択して公開した後に記事の投稿(最初の記事)をしてページの編集画面にて「ページを表示」をクリックするとテンプレートのphpに記述された内容が表示されます。

その後、progressionにてパーマーリンクから読み込みトレースすると表示されるんですが、再度、記事を投稿(2回目の記事)してページ編集画面にて「ページを表示」をクリックすると2回目の記事も表示されます。(http://the-zombis.sakura.ne.jp/wp/?page_id=161)

そしてflashでコンパイルしてトレースを確認してみてもなぜか2回目の記事の内容がでてこないで最初の記事の内容してでてこないのです。
actionscript側は問題ないと思うのですが、wordpress側でなにか操作方法とか間違えてるんでしょうか?

下記テンプレートのphp

<?php echo '’; ?>

cat_name;} ?>

あつのすけ 10-01-19 (火) 20:06

>kiri_flaさん

コメントありがとうございます。

wp側ではきちんと表示されているとなると、そちらは問題ないように思います。(traceして表示されないのならば、as側の問題かと…)

もう少し情報を頂ければ、きちんとお答えできるのですが…

問題がないようならば、どこかに検証に使ったものをアップしていただけますでしょうか?

宜しくお願い致します。

kiri_fla 10-01-20 (水) 13:16

返答ありがとうございます。コメントのphpが途切れてしまって申し訳ありません。

現在test1,test2,test3をwordpressから投稿しています。ページ編集でページを表示するだとtest3までの情報が表示されますが
その後、flashでコンパイルしてトレースを確認するとtest2までしか表示されない。
上記の原因が分からないということで下記にファイルをリンクしておきます
忙しいなか申し訳ありません。

あつのすけ 10-01-20 (水) 13:54

>kiri_flaさん

テンプレートの方のテキストは開けましたが、zipファイルへのリンクが、404 Not Foundになっています。

メールをお送りした方が早いかな? と思い、フォームに入力していただいたアドレスにメールを送っても、エラーで返ってきました。

zipファイルへのリンクを、今一度確認していただけますでしょうか?

kiri_fla 10-01-20 (水) 14:30

失礼しました。MyProject12ではなくMyProject_12でした。

上記のアドレスで大丈夫なはずです。すみません

あつのすけ 10-01-20 (水) 15:30

>kiri_flaさん

僕の環境でパブリッシュしてみたところ、きちんとtest1~test3までtraceされましたが…(設定は何も変更せず、そのままCtrl + Enterしただけ)

出力パネルに表示されたものを、以下にアップしておきました。

http://flabaka.com/download/trace.zip

ご確認ください。

kiri_fla 10-01-20 (水) 17:19

確認ありがとうございます。
確かにトレースされてます。
もしかしてなんですが、wordpress管理画面の投稿で新規投稿してサイトを確認すると反映されていて、投稿した後にページの編集画面にて「ページを表示」(この時点でXMLを作成??)をクリックしても新規投稿は表示されてなくもちろんFlashでコンパイルしても新規投稿に関して表示されないのはタイムラグがあるからなんでしょうか?

あつのすけ 10-01-20 (水) 17:51

>kiri_flaさん

private var xPATH:String = “■■■■■■■■■■/?page_id=●●●”;

記事を投稿後、上記アドレスにアクセスして、反映されていなければ、もちろんFlash側で表示することは出来ません。

僕がWPの連携を試した際、そんな現象に陥ったことはなかったですが…

匿名 10-01-20 (水) 18:37

ありがとうございます。
wordpressの初期設定を弄ってページを表示をクリックしたら表示されましたが、flash側のトレースではやはり表示されないです。
記事を投稿したあとサイトの確認では記事が反映されてるんですけどね・・・

ん~操作方法が悪いのか謎ですが、プログラムが間違ってないとなるとあとは自分で調べてみます。
お手数をおかけして申し訳ありません。ありがとうございました。
ブログ楽しみにしています。

kiri_fla 10-01-20 (水) 18:40

投稿してサイト確認するとすぐに反映されてるんですけど・・・謎です。。

プログラム上の問題でないとなる・・wordpressの操作方法や設定が悪いのか・・
ちょっと調査してみます!
忙しい中お手数おかけしました。ありがとうございます。

Comment Form
Remember personal info

Trackbacks:2

Trackback URL for this entry
http://flabaka.com/blog/wp-trackback.php?p=1209
Listed below are links to weblogs that reference
ProgressionとWordPressの連携 from flabaka
pingback from Wordpressで記事に投稿した画像一覧をProgression用のXMLで出力 | STUDIO Bloom 大阪・北摂地域を中心としたWebサイト・システム制作 09-08-04 (火) 0:47

[...] レートです。 (元ネタはこちらを参考にさせて頂きました。深謝) PLAIN TEXT PHP: [...]

pingback from そろそろ自分の所のホームページを作成しよう - WillCraft Blog 09-12-01 (火) 0:27

[...] http://flabaka.com/blog/?p=1209 [...]

Home > ActionScript3.0 | Event | Progression | Works > ProgressionとWordPressの連携

Search
Feeds
Meta

Return to page top