Php+Word Press
Upcoming SlideShare
Loading in...5
×
 

Php+Word Press

on

  • 3,926 views

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

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

Statistics

Views

Total Views
3,926
Views on SlideShare
3,905
Embed Views
21

Actions

Likes
1
Downloads
20
Comments
0

3 Embeds 21

http://s.deeeki.com 16
http://localhost 3
http://www.slideshare.net 2

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Php+Word Press Php+Word Press Presentation Transcript

  • PHP+WordPress 有限会社アリウープ 柏岡 秀男 Twitter:@kashioka Kashioka(at)lleyoop.jp http://alleyoop.jp
  • 自己紹介
    • 2002 年よりPHPを中心としたWEBアプリケーション開発会社を始める
    • PHPカンファレンスでは2000年の開始当初から主に初心者セッションや懇親会の仕切りを担当
    • バリバリの職人系 WEB アプリ屋です
    • そして PHP   WordPress LOVE !
  • 他アプリケーションとの連動
    • テンプレート埋め込み
    • プラグイン化
    • 単純に他アプリに取り込むのであればスクレイピング
    • OpenIDの利用(プラグイン)
    • クッキーやセッションの利用(ドメインに注意)
    • フレームワーク等からDBを直接参照(後ほどのセッション参照)
  • テンプレートについて
    • 簡単なカスタマイズはテンプレートから
  • テンプレート構造(デフォルトテーマ)
    • 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.php
    • header.php
    • page.php
    • single.php
  • テンプレート構造例(カスタム)
    • 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
  • ページ構成 header.php footer.php sidebar.php single.php page.php category.php archive.php
    • ページ描画時にそれぞれのファイルが読み込まれる
    • テンプレートファイルはPurePHP
  • あるテーマの page.php の中身
    • <?php get_header (); ?>
    • <div id=&quot;content&quot; class=&quot;grid_8&quot;>
    • <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    • <div class=&quot;post&quot; id=&quot;post-<?php the_ID(); ?>&quot;>
    • <h2><?php the_title(); ?></h2>
    • <div class=&quot;entry&quot;>
    • <?php the_content('<p class=&quot;serif&quot;>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 (); ?>
  • プラグインについて
  • プラグイン
    • 探してみて無い場合は作ってしまえばよい
    • http:// wpdocs.sourceforge.jp / プラグインの作成
    • Worpress に対して行われる処理にフックされプラグインの処理を行う。
    • アクションとフィルタの2種類がある
      • アクション --WordPress で発生するイベントによって実行されます。
      • フィルタ -- 出力時に実行されテキストデータを変更するものです。
  • 作り方—プラグイン動作の仕組み
    • イベント発生時に実行する 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 関数が挿入され、始動される
  • アクションフックの一例
    • publish_post
      • 投稿記事が公開された際、または公開済みの記事の情報が編集された際に実行する。
    • comment_post
      • コメントがデータベースに保存される直前に実行する。
    • trackback_post
      • 投稿記事にトラックバックが追加された際に実行する。
    • wp_meta
      • sidebar.php テンプレートが wp_meta 関数を呼び出す際に実行し、プラグインがサイドバーにコンテンツを挿入することができるようにする。
  • フィルタフックの一例
    • the_title
    • the_content
    • the_tags
      • データベースから取得したデータを画面に出力する前に適用される。
    • 詳しくは http://wpdocs.sourceforge.jp/ プラグイン _API/
  • 簡単なカスタマイズ
    • The_title や the_content 等にフックする
    • ややこしい処理は外部クラスとしてライブラリ化してしまう。
    • 既存のライブラリ化したものの再利用が可能
  • スクレイピングについて
    • コンテンツ取り込み
    WordPress 他システム
  • OpenPNE に読み込む例
    • HTTP/Client
    • PEAR のパッケージ
    • require_once &quot;HTTP/Client.php&quot;;
    • $client =& new HTTP_Client();
    • $client->get($blog_url);
    • $response = $client->currentResponse()
    • $body = $response['body'];
    • //URL 変更
    • $after = preg_replace('/a href=(['|&quot;])+(http://.+)(/[0-9a-z-/._?=&%[]~]*)/i',&quot;a href=$1&quot; . 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);
  • スクレイピング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&quot;
    • WHERE $id == “idname&quot;
    • WHERE preg_match(&quot;/^http:///&quot;, $href )
  • OpenID
    • WP-OpenID 他各種プラグインがある
    • 用途に合わせ考える
    • mixiOpenID や hatenaOpenID との連動も可能
    • OpenID の仕組みが初めから入っているアプリであれば ID 連動が簡単
  • クッキーやセッション
    • 別アプリで動いているクッキーやセッションを利用しユーザ権限等を再利用する
    • クッキーにはドメイン指定がされている場合があるので注意が必要
    • setcookie(&quot;TestCookie&quot;, $value, time()+3600, &quot;/~rasmus/&quot;, &quot;.example.com&quot;, 1);
    • http://www.php.net/manual/ja/function.setcookie.php
  • まとめ
    • 連動する目的を事前に考える
    • WordPress のカスタマイズは極力やめる
      • バージョンアップ時に対応が難しいため
    • ライブラリ化した上でのプラグイン化を行う
    • 他システムから利用する場合もバージョンアップに引きずられない設計、設置を考える
    • ご清聴ありがとうございました。
    • 開発その他のご相談、お気軽にe-mail,メッセージしてください
  • PHP+WordPress 有限会社アリウープ 柏岡 秀男 Twitter:@kashioka Kashioka(at)lleyoop.jp http://alleyoop.jp