サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Pixel 9
ounziw.com
WordPressでは、個別投稿の場合、ヘッダー部分にrel=canonicalが表示されます。 <link rel='canonical' href='http://example.com/hello-world' /> のように表示されます。この表示が行われる仕組みを、WordPress4.0で調べてみました。 rel=canonicalが表示される仕組み WordPressのテーマにはヘッダー部分にwp_head()関数が埋め込まれています。rel=canonicalも、この部分で表示されています。 表示する関数は、wp-includes/link-template.phpにある、rel_canonical()関数です。 function rel_canonical() { if ( !is_singular() ) return; global $wp_the_query; if
concrete5.7 のブロック作り方です。標準でたくさんブロックが用意されていますが、オリジナルブロックを作ると、ホームページの更新作業が楽になることがあります。※PHPの基礎を習得済みの前提です。 作るブロック 今回作るブロックは、「電話番号、メールアドレス、URLを表示するテーブル」です。テーブルのHTML出力は開発側で決めておき、表示するデータをブロック編集画面で入れていく、という形です。 データベースの定義 ブロックに入れたデータは、データベースに保存されます。「データベースに保存されるデータがどんなものなのか」を設定する必要があります。db.xmlというファイルで設定します。 <?xml version="1.0"?> <schema version="0.3"> <table name="btInfotable"> テーブル名 <field name="bID" type=
JP-Secure(ジェイピー・セキュア )によりSiteGuard WP Pluginが公開されました。JP-Secureは、ウェブアプリケーションファイアウォールなどのセキュリティ商品を提供している会社です。今回、ログイン周りに関連する部分を試してみました。調査したプラグインバージョンは1.0.2です。試したのは以下の4つです。 Rename Login CAPTCHA Same Login Error Message Login Lock です。今回はログイン機能に関連するところを調査しましたので、Admin Page IP Filter、Disable Pingback、WAF Tuning Supportは調査対象から除外しました。Fail onceはログインに関係しますが、プラグインの初期設定でオフなので除外しました。 Rename Login WordPressのログインペー
OSC 東京で佐川 夫美雄さんのセッションでAngularJSが気になったので、AngularJSリファレンスを買って、勉強を始めました。AngularJSリファレンス自体は、AJAXに限らず、AngularJSの全般を紹介している本です。 AngularでAJAX AngularでAJAXする方法ですが、$httpを使うとアクセスできます。以下のようなコードを書きます。今回は、シンプルに「情報を取得する」だけを行っています。 // app.js angular.module('app', []) .controller('SampleController', ['$scope', '$http', function ($scope, $http) { $http({ method: 'POST', url: 'http://example.com/wp-admin/admin-ajax.
WordCamp Tokyo 2014 で必ず押さえておきたい、今すぐできるセキュリティ対策に登壇しました。 「コードを書かない」という条件 セッションの対象者を初心者〜、としました。このため、「コードを書かないでできる」という制約のもとで、最低限何をすべきか、という観点で、話す内容を決めました。なのでサーバーやプログラムに詳しい人には物足りなかったかもしれません。 セッションのスライドは、補足等を加えた上で、近いうちに公開されます。 この記事では、セッション内容が物足りなかった、という方向けに補足を書きたいと思います。 不正ログインに対して サーバーの設定等を編集できるのであれば、ネットワークレベルで制限してしまうのが確実です。wp-login.phpや、xmlrpc.phpや、wp-admin/ディレクトリは、アクセス可能な範囲を特定のIPアドレス/プロバイダに制限する、とすれば良いで
WordPressで1ページ目と2ページ目以降で表示件数を変更する方法を調べてみました。WordPressでは、基本的に1ページの表示件数は固定されています。このため、1ページ毎の表示件数を変える処理が必要になります。なので力技で変更してみました。 pre_get_postsフック WordPressの処理をカスタマイズするときに重宝するのが、フックです。フックは、WordPressの処理に割り込みを入れることができます。このおかげで、WP本体のコードを改変しないでWPの挙動をカスタマイズすることができます。 今回は、1ページの表示数を変更したい、です。1ページの表示数は、メインループに関係しますね。なので、メインループ処理をカスタマイズします。メインループの処理を変更するにはpre_get_postsフックが役立ちます。このフックはクエリを実行する前に呼び出されます。(query_pos
MySQLデータベースを生成する場合、CREATE TABLE IF NOT EXISTSを使うと、作成済みのテーブルを作ろうとするエラーを防げます。しかし、その後のスクリプトの処理が面倒になるっぽいです。 元ネタはPHP逆引きレシピ 第2版 (PROGRAMMER’S RECiPE)のレシピ270です。コードのライセンスは修正BSDです。 $sql = "CREATE TABLE IF NOT EXISTS example ( id INT(11) NOT NULL auto_increment PRIMARY KEY, message TEXT ) DEFAULT CHARSET=utf8"; try { $db = new PDO($dsn,$dbUser,$dbPass); $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
AGPL ライセンスについてです。 互恵ライセンス AGPL は互恵ライセンスです。GPL と大筋は同じで、ソフトウェアの改変や商用利用が許可されたライセンスです。GPL と異なる点は、ネットワーク経由の利用であっても、利用者に自由を保証することです。 たとえば、発注者がウェブ制作会社にウェブサイト制作を依頼し、ウェブ制作会社の契約するサーバー上でCMSが動いている場合を考えて見ましょう。このような場合の発注者は、GPLライセンスでは「自分がどんなソフトウェアを使っているか」を知る権利が保証されません(この弱点はASPループホールと呼ばれています)。一方、AGPLでは、このような場合の発注者も権利が保証されます。 つまり、利用形態を問わず、利用者は、自分がどんなソフトウェアを使っているか、知る事ができます(ウェブサービス等に自分が登録した個人情報がどう管理されているか分からなくて不安になる
OctoberというCMSが開発中らしいです。Laravelフレームワークを利用しているらしいです。最近の流行はやはりフレームワークベースのCMSでしょうかね。 まだ開発中、ということでリンク先にあるデモ動画を見た感想です。コードがダウンロードできるようになったら、また詳しいレビューをしたいと思います。 HTMLを知っている人が管理するウェブサイトに適しているのではないかな、と思いました。多くのCMSは、「HTMLを知らなくてもできる」という点がメリットなのですが、その分、細かいカスタマイズをしようとすると、HTMLを直接編集するよりも手間がかかる、といったケースが起こりえます。Octoberなら、HTMLを知っている人にとっては編集/カスタマイズがしやすそうです。 Ajax機能の追加がしやすく工夫されているようです。通常ならHTML+JavaScript+PHPが必要となるのですが、デモ
FuelPHP advent Calendar 2013の10日目です。昨日はAspectMockでFuelPHPのアプリを100%テスト可能にする(@kenji_s)でした。 今日は、「イベント機能を使ってアプリケーションをカスタマイズする」です。 イベントとは何か イベントとは、FuelPHPコアを書き換えることなく、独自の処理を差し込むことができる仕組みです。 FuelPHPの処理の途中に、トリガー(ここを通ったときに、追加処理を実行する場所)がいくつか用意されている トリガー名を指定して、独自の処理を追加する 独自の処理が追加されたトリガーのところで、独自の処理が実行される という仕組みです。WordPressを使っている方であれば、「WordPressのアクションフックに似ている」と思うかもしれません。 アプリケーションの処理の流れ: 青丸がトリガー イベントを実行: 処理途中の
この記事はhttp://fuelphp.com/blogs/2013/08/2-0-an-updateを元に作成しています。 フォルダ構成の見直し 古い ‘frontend’ (fuel/fuel) を、新しい ‘frontend’ (fuelphp/fuelphp) と ‘application’ (fuelphp/demo-application) composer ライブラリとに分離する。アプリケーションに影響を与えずに、Composer アップデートが可能になる。 view を Presenter とリネームする。ルーティングエンジンがコントローラ、タスク、マイグレーションを扱う。タスクとマイグレーションは特別なものではなくなり、コントローラと同じように作成できる。 アプリケーションフォルダに cache, logs, tmp が増える。これらを var フォルダに纏めるかも、とい
WordCamp Tokyo 2013 セッション動画一覧を纏めてみました。 WordPress初心者向けセッション (10:00〜) 経験談からリアルに語る!ゼロからWordPressを理解するための勉強法 コンテンツセッション (11:00〜) 魅力的なコンテンツの作り方とその拡散方法 Automattic社セッション (12:00〜) WordPress への貢献(Contributing to WordPress) テクニカルセッション (13:00〜) WordPress プログラマたちが開発時に意識していること デザインセッション (14:00〜) 現場の Web デザイナーが語る、WordPressをさらに使いこなすヒント 運用セッション (15:00〜) サイトと長くつきあうお手入れ術 ―保守、マネタイズ、そしてセルフブランディング― 基調講演 (13:00〜) 世界の W
徹底攻略 PHP5 技術者認定 [上級] 試験問題集 [PJ0-200]対応を共著で執筆しました。この本は、PHP5技術者認定上級試験の試験範囲を網羅すべく作成されています。全656ページの大作です。執筆には一年ぐらいかかりました。 体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践や、巷で鈍器と噂されている【Amazon.co.jp限定特典付き】本格ビジネスサイトを作りながら学ぶ WordPressの教科書2 スマートフォン対応サイト編と同じくらい厚い本です。大きさは一回り小さいですけど。さすがにマンモス本(PHP5徹底攻略 エキスパート編)には負けます。 上級試験では、アプリケーションを作るのに必要な知識や技術ももちろん問われます。しかし、それだけではなく、セッションハンドラやエラーハンドラ等、通常ならフレームワークが面倒見てくれる部分の理解も問われま
http://www.checkmarx.com/wp-content/uploads/2013/06/The-Security-State-of-WordPress-Top-50-Plugins.pdfで、WordPress 人気 50 プラグインの中に脆弱性があるプラグインがある、と報告されています。 いくつかのプラグインに、脆弱性が報告されています。SQLインジェクション、XSS(クロスサイトスクリプティング)、CSRF(クロスサイトリクエストフォージェリ)、PT(パス遡り)、RFI(外部ファイル混入)です。 SQLインジェクションについては、プリペアドステートメントを使うことでほぼ防げます。ORマッパーを自作する、とかでない限り、プリペアドステートメントを使う、で十分でしょう。WordPress カスタマイズでは、wp_insert_postを使う方法がありますし、動的プレースホル
Exec-PHPの使用について、なぜexec-PHPがモテるのか、WordPressを使ってる僕が気になったある記事のこと、等、様々な意見が出て、盛り上がりを見せています。 Exec-PHP をローカルでざっと試してみた。分かったのは、 投稿の本文に <php コード ?> を記述すると、eval で評価する(PHP として実行する) 管理者等一部のユーザーの投稿のみ、eval で評価する対象となる という処理を行うらしい、ということです。 投稿の中で PHP コードを書いて実行できると、確かに自由度があがります。しかし、任意の PHP コードが実行できてしまうと、セキュリティリスクが高まります。 (管理者パスワード漏洩/ブルートフォースアタック等で)不正ログインされた後、投稿本文にコードを書き込まれる SQLインジェクション/CSRF脆弱性があると、悪意あるPHPコードを投稿本文に埋め込
カスタムフィールドでショートコードを実行できるプラグインを作成しました。 Advanced Custom Field: Shortcode Fieldというプラグインです。タイトルの通りで、Advanced Custom Fields にフィールドを追加して使用するプラグインです。 Advanced Custom Fields を使用している場合、wysiwyg でショートコードを入力すれば、ショートコードが実行されます。ただ、wysiwyg だとショートコード以外も入力できてしまいます。ショートコードだけ入力したい場合に、このプラグインでショートコードフィールドを作ると便利です。 また、スクリーンショットを見ると分かるように、自分の WordPress で利用できるショートコードが表示されます。(引数等までは表示しませんが)ショートコードのスペル確認等にも役立つでしょう。
WordPress の月別アーカイブについて、フォーラムで質問される方も多いようです。カテゴリ毎の月別アーカイブ、カスタム投稿の月別アーカイブ、投稿者毎の月別アーカイブ。これらは全てデフォルトで対応しています。 カテゴリ毎の月別アーカイブはURL/?cat=1&m=201208のように、カテゴリーIDと年月を指定すればOKです。同様に、カスタム投稿の月別アーカイブはURL/?post_type=event&m=201209のように、投稿タイプ名と年月を指定すればOKです。投稿者毎の月別アーカイブは、URL/?author=1&m=201210のように、投稿者IDと年月を指定すればOKです。さらに、カスタム投稿の投稿者毎の月別アーカイブも、URL/?post_type=news&m=201210&author=2 のように指定すればOKです。 しかし、デフォルトで対応していることは、あまり知
WordPress にはプラグインがたくさんあります。しかし、WordPress がアップデートされたとき、新しいバージョンの WP にプラグインがすぐ追従するとは限りません。Contact Form 7 add confirm や、MW WP Form 等で、そういう状況になったことがあるらしいです。 では、プラグインが追従しなかった場合、どういう対応があり得るでしょうか。 プラグイン使用を止める 代替プラグインを使う プラグインを書き換える プラグインを自作する 古いバージョンの WordPress を使う WordPress 以外を使う 等が考えられます。 プラグイン使用を止める プラグインの担っていた機能は我慢することになります。安全な運用という観点では、確実な対処方法と言えるでしょう。もし、プラグインがバージョンアップしたら、再び有効化すれば良いでしょう。今後も使わないのであれば
キンドル本を印刷する(PDFに変換する)方法を試してみました。キンドルで電子書籍を購入すると、 .azw3 形式になっています。キンドル自体(paperwhite)には、印刷する機能は無いようです。(キンドルをプリンタに繋ぐだけでは印刷できないようです。) なので、キンドルをパソコンに繋いで、.azw3 形式のファイルを取り出し、PDF に変換する、という方法で印刷してみます。PDFについては、「今更聞けないPDF」をごらんください。 ※paperwhiteにて検証しています。キンドルファイアなどでは操作方法などが異なるかもしれません。 電子書籍管理ソフトcalibre 変換に使ったソフトは、calibre です。キンドルを USB 接続した状態で calibre を起動すると、メニューに「デバイス」があります。(calibre を使用した環境は Mac OS X です。calibre に
FuelPHP Advent Calendar 2012 6日目です。昨日はFuelPHPで日本人にやさしいフォームを作る(@redsnow_さん)でした。今日はユニットテストのすすめです。公式マニュアルhttp://fuelphp.com/docs/general/unit_testing.htmlを参考にしています。 PHPUnitのインストール FuelPHPでは、PHPUnitというテスティングフレームワークを利用しています。まずPHPUnitをインストールしましょう。 PHPUnitは、PEARインストーラを使用してインストールします。まず、pear.phpunit.deからインストールできるようにします。auto_discover を有効にして、新規チャネルを自動的に探すようにします。 pear config-set auto_discover 1 続いてインストールします。
FuelPHP で JQuery 配信に CDN 利用するパッケージを作りました。ソースコードはhttps://github.com/ounziw/fuel-jquerycdnで公開しています。 JQuery 等のスクリプトを利用する場合、自前のホスティングから配信することもできます。google 等が提供する CDN(コンテンツデリバリネットワーク、Contents Delivery Network)を利用することもできます。毎回タグを作って貼るのは面倒ですし、ミスが起きるかもしれません。なので、CDN 経由で JQuery を配信するためのコードを書きました。 このパッケージを使うと、Jquerycdn::getcdn('google')で、 <script type="text/javascript" src="https://ajax.googleapis.com/ajax/lib
FuelPHP で WordPress のログイン機能を使うの続きです。 WordPress では、wp_login_form()関数が用意されていて、wp-login.php 以外の場所からログイン操作できるようになります。ログイン後、元のページに戻ることができます。しかし、ログイン失敗時には wp-login.php にリダイレクトされます。ログイン失敗時のリダイレクト先を変えることができないか?と調べてみました。 公式フォーラムの過去ログ Can you stop wp_login_form redirecting to wp-login on fail? に掲載されていました。元は How to Redirect WordPress Failed Logins かららしいです。 add_action( 'wp_login_failed', 'my_front_end_login_f
※注意※ このカスタマイズは、WordPress のクッキー設定を変更します。 FuelPHP で WordPress のログイン機能を使う方法です。 王道はFuelPHPで全部まかなう もちろん、王道はFuelPHPで全部まかなう、だと思います。 FuelPHP でログイン機能を作る FuelPHPフレームワークベースのCMS Novius OSを使う という方法があります。しかし、WordPress を一緒に使うことで楽に構築できるケースはあるかもしれません。 今回は、WP を http://localhost/wordpress/ 、Fuel を http://localhost/public/ という形をまず試してみます。WP の配下に Fuel、あるいは Fuel の配下に WP、という方法もありますが、まずは .htaccess の干渉しない横並びをやってみました。 (追記:
ウェブアプリケーションフレームワーク(WAF、動的なウェブサイトを作るフレームワーク)で開発されているCMS(PHP限定)を調べてみました。現在開発中のプロジェクトも含めています。 順序は(フレームワーク、CMSともに)アルファベット順です。他にもこんなCMSあるよ、という方は、コメント等でお知らせください。 ※フレームワークとCMSのくっつき具合には、プロジェクト毎に差があります。フレームワークべったりのものも、フレームワークの一部をライブラリ的に利用しているものもあります。 CakePHP basercms.net/ croogo.org/ www.netcommons.org/(開発中。3以降) CodeIgniter expressionengine.com/ www.getfuelcms.com/ ionizecms.com/ mojomotor.com/ www.pyrocms
twentyeleven の functions.phpに続き、今回は twentytwelve の functions.php のコメントを日本語化しました。 twentytwelve 1.0 日本語 — Gistで公開しています。 主な変更点 スタイルシートをwp_enqueue_styleで読み込む 多くの関数が子テーマで関数上書き対応に body class にクラスプロパティを追加 です。他にもありますが、大きく変わったのはこの3つのようです。 twentytwelve は twentyeleven よりも行数が減っていますが、twentytwelve は custom-header.php を別ファイルにしているので、トータルでは行数はそれほど変わらないようです。 テーマカスタマイズに必要な基礎知識はWordPress3.5対応 テーマカスタマイズのためのPHPをごらんください
FuelPHP のバリデーションについてです。標準では文字長でのバリデーションが用意されています。core/classes/validation.phpでは、 public function _validation_min_length($val, $length) { return $this->_empty($val) || (MBSTRING ? mb_strlen($val) : strlen($val)) >= $length; } というように、min_length, max_length, exact_length が用意されています。これらは、マルチバイト文字を1文字と判定して文字長を決めます。もちろんこの形式が望ましい場合が多いでしょうけど、画面表示などで使う文字列の場合、文字幅のほうが望ましい場合があるかもしれません。 FuelPHP 本体には無いようなので、つくってみ
wordpress で facebook のコメント欄を日本語化する方法です。 facebook for wordpress 日本語化ファイルを入手すれば、管理画面のメッセージの大半(翻訳対象となっている部分)が日本語化されます。しかし、facebook のコメント欄は日本語化されませんでした。 facebook のプラグイン自体は、多言語対応設計になっています。設定書式は、ja_JP のように、「言語_地域」となります。同じ言語でも、地域によって、通貨・単位・時刻の表記等の慣習が異なる場合に対応するためです。これにより、en_GBとen_USを区別したり、fr_FRとfr_CAを区別したりできます。 ですが、問題は、WordPress 日本語版の言語設定と異なることです。WordPress では en_US等は同じですが、日本語はjaです。日本語の場合は、使用される地域が、日本という国家
FuelPHP のコアは、ユニットテストが書かれていない部分があります。オープンソースなので、「無ければ作る」ということで少し書いてみました。 今回書いたのは、ページネーションクラスです。http://docs.fuelphp.com/classes/pagination.html にあるサンプルを参考に作成しました。今のところ prev_link と next_link だけです。 <?php /** * Part of the Fuel framework. * * @package Fuel * @version 1.0 * @author Fuel Development Team * @license MIT License * @copyright 2010 - 2012 Fuel Development Team * @link http://fuelphp.com */ n
FuelPHP の Parser の設定方法がないか、と調べたところ、実は簡単でした。 app/config/parser.php で設定できます。ただし、app/config/parser.php は初期状態では存在しません。なので、packages/parser/config/parser.php を参考に、自分で作成する必要があります。(packages/parser/config/parser.php のソースコメントに記載されていました。) /** * NOTICE: * * If you need to make modifications to the default configuration, copy * this file to your app/config folder, and make them in there. * * This will allow yo
次のページ
このページを最初にブックマークしてみませんか?
『Standing on the Shoulder of Linus』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く