php+word press

22
PHP+WordPress 有有有有有有有有有 有有 有有 Twitter:@kashioka Kashioka(at)lleyoop.jp http://alleyoop.jp

Upload: hideo-kashioka

Post on 13-Jun-2015

8.747 views

Category:

Technology


1 download

DESCRIPTION

9/8日開催のアリウープセミナのPHP+Worpressセミナのセッション1の資料です。

TRANSCRIPT

Page 1: Php+Word Press

PHP+WordPress

有限会社アリウープ柏岡 秀男Twitter:@kashiokaKashioka(at)lleyoop.jphttp://alleyoop.jp

Page 2: Php+Word Press

自己紹介 2002 年よりPHPを中心としたWEBア

プリケーション開発会社を始める PHPカンファレンスでは2000年の開

始当初から主に初心者セッションや懇親会の仕切りを担当

バリバリの職人系 WEB アプリ屋です そして PHP   WordPress LOVE !

Page 3: Php+Word Press

他アプリケーションとの連動 テンプレート埋め込み プラグイン化 単純に他アプリに取り込むのであればスクレイピング

OpenIDの利用 (プラグイン) クッキーやセッションの利用(ドメインに注意)

フレームワーク等から DBを直接参照(後ほどのセッション参照)

Page 4: Php+Word Press

テンプレートについて 簡単なカスタマイズはテンプレートから

Page 5: Php+Word Press

テンプレート構造(デフォルトテーマ) 404.php comments.php image.php search.php archive.php footer.php index.php searchform.php

archives.php functions.php links.php sidebar.php comments-popup.p

hp header.php page.php single.php

Page 6: Php+Word Press

テンプレート構造例(カスタム) 404.php footer.php links.php sidebar-single.php 960.css functions.php page.php sidebar.php archive.php header.php reset.css single.php Image.php

rtl.css style.css archives.php Images screenshot.png tag.php comments-popup.php index.php search.php text.css comments.php index_bak.php searchform.php wp-config.php

Page 7: Php+Word Press

ページ構成

single.phppage.php

category.phparchive.php

ページ描画時にそれぞれのファイルが読み込まれる

テンプレートファイルはPurePHP

Page 8: Php+Word Press

あるテーマの page.php の中身<?php get_header(); ?>

<div id="content" class="grid_8">

<?php if (have_posts()) : while (have_posts()) : the_post(); ?> <div class="post" id="post-<?php the_ID(); ?>"> <h2><?php the_title(); ?></h2> <div class="entry"> <?php the_content('<p class="serif">Read the rest of this page &raquo;</p>'); ?>

<?php wp_link_pages(array('before' => '<p><strong>Pages:</strong> ', 'after' => '</p>', 'next_or_number' => 'number')); ?>

</div> </div> <?php endwhile; endif; ?> <?php edit_post_link('Edit this entry.', '<p>', '</p>'); ?> </div>

<?php get_sidebar('single'); ?>

<?php get_footer(); ?>

Page 9: Php+Word Press

プラグインについて

Page 10: Php+Word Press

プラグイン 探してみて無い場合は作ってしまえばよい http://wpdocs.sourceforge.jp/プラグインの作成 Worpress に対して行われる処理にフックされプ

ラグインの処理を行う。 アクションとフィルタの2種類がある

アクション --WordPress で発生するイベントによって実行されます。

フィルタ -- 出力時に実行されテキストデータを変更するものです。

Page 11: Php+Word Press

作り方—プラグイン動作の仕組み イベント発生時に実行する PHP 関数をプラグインファイル内

に作成 add_action,add_filter を呼び出して WordPress にフック

class alleyoopChiezo{function __construct(){}function outputChiezo($content) { if(!is_single()) return $content; $content .= $this->getQuestion(); return $content;}中略}$ac = new alleyoopChiezo();add_filter('the_content', array(&$ac,'outputChiezo'),200);

プラグイン内の PHP 関数が挿入され、始動される

Page 12: Php+Word Press

アクションフックの一例 publish_post

投稿記事が公開された際、または公開済みの記事の情報が編集された際に実行する。

comment_post コメントがデータベースに保存される直前に実行する。

trackback_post 投稿記事にトラックバックが追加された際に実行する。

wp_meta sidebar.php テンプレートが wp_meta 関数を呼び出す際に

実行し、プラグインがサイドバーにコンテンツを挿入することができるようにする。

Page 13: Php+Word Press

フィルタフックの一例 the_title the_content the_tags

データベースから取得したデータを画面に出力する前に適用される。

詳しくは http://wpdocs.sourceforge.jp/ プラグイン _API/

Page 14: Php+Word Press

簡単なカスタマイズ The_title や the_content 等にフックする ややこしい処理は外部クラスとしてライ

ブラリ化してしまう。 既存のライブラリ化したものの再利用が可

Page 15: Php+Word Press

スクレイピングについて コンテンツ取り込み

WordPress他システム

Page 16: Php+Word Press

OpenPNE に読み込む例 HTTP/Client PEAR のパッケージrequire_once "HTTP/Client.php";

$client =& new HTTP_Client();$client->get($blog_url);$response = $client->currentResponse()$body = $response['body'];//URL 変更$after = preg_replace('/a href=([\'|\"])+(http:\/\/.+)(\/[0-9a-z-\/._?=&%\[\]~]*)/i',"a href=$1" . OPENPNE_URL . '?

m=pc&a=page_h_view_colum&b=' . $colum_name . '&q=$2$3',$body);

//GOLD 対応

if(getGold($u)){ $after = preg_replace('/\[GOLD\](.+)\[\/GOLD\]/i','',$after);}$this->set('h_column_body', $after);

Page 17: Php+Word Press

スクレイピング Tip

<HTML><BODY>< TITLE>XXX</TITLE><DIV ID= contents><a href=http://sss.com>a</a><a href=http://sss.com>a</a>

コンテンツ</ DIV></BODY></HTML>

Wordpressのページ html SQL( http://www.jonasjohn.de/lab/htmlsql.htm) SQLのように HTMLの要素を抜ける

WHERE句 WHERE $class == “classname" WHERE $id == “idname" WHERE preg_match("/^http:///", $href)

Page 18: Php+Word Press

OpenID WP-OpenID他各種プラグインがある 用途に合わせ考える mixiOpenID や hatenaOpenID との連動も可

能 OpenID の仕組みが初めから入っているア

プリであれば ID連動が簡単

Page 19: Php+Word Press

クッキーやセッション 別アプリで動いているクッキーやセッションを

利用しユーザ権限等を再利用する クッキーにはドメイン指定がされている場合が

あるので注意が必要

setcookie("TestCookie", $value, time()+3600, "/~rasmus/", ".example.com", 1);

http://www.php.net/manual/ja/function.setcookie.php

Page 20: Php+Word Press

まとめ 連動する目的を事前に考える WordPress のカスタマイズは極力やめる

バージョンアップ時に対応が難しいため ライブラリ化した上でのプラグイン化を

行う 他システムから利用する場合もバージョ

ンアップに引きずられない設計、設置を考える

Page 21: Php+Word Press

ご清聴ありがとうございました。

開発その他のご相談、お気軽に e-mail,メッセージしてください

Page 22: Php+Word Press

PHP+WordPress

有限会社アリウープ柏岡 秀男Twitter:@kashiokaKashioka(at)lleyoop.jphttp://alleyoop.jp