カテゴリー: WordPress

  • Twitterのタイムラインを見てたらこんな記事が流れてきました。

    「WP OS FLV」というプラグインで、Trojan.JS.Redirector.ueというのをねじ込まれそうになる・・・ 名前からしてガンブラー系のアレかと予想汗 23 hours ago via Silver Bird ·  Reply ·  Retweet ·  Favorite · powered by @socialditto

    いやいや、そのプラグイン昔使ったことあるけど!!!!いやはやなんとまぁ・・・・

    WordPressのプラグインやテーマに不正なコードが挿入されたなんて話がここ最近増えてきましたね。

    有名処のプラグインにも不正なコードが入っていたってことで、去年ニュースになった気がします。
    WordPressのプラグインに悪質なコードが混入 – ITmedia ニュース

    かといって基本的に利用は自己責任なので、何とか考えなくてはいけない問題です。
    プラグイン無しでWordPress案件をこなすのはなかなかしんどいものがありますし。少なくともContact Form 7 Head CleanerAdmin Menu Editorとかが使えないとホントどーしましょうって感じです。こんなの自分で作れる気がしないですし。

    使わないプラグインはアンインストール

    『入れてみたけど微妙・・・・』ってプラグイン、無効にしたまま放置してませんか?アンインストールが面倒だというのも気持ちはよくわかります。

    有効化していないプラグインの脆弱性を突かれるケースも有るようです。プラグインが有効かどうかに限らずプラグインファイルは読み込まれてはいるので、当然っちゃ当然なんですが。

    プラグインを入れている数が多ければそれだけリスクになるので機能していない無駄なものはアンインストール!

    プラグインむやみやたらと入れない。

    データベースが管理画面から見れたら便利。確かにそうです。僕も開発時にはphpmyAdminをWordPressから見れるようにするプラグインを入れたりします。ただ、少なくとも運用中は要らないですよね。レンタルサーバについてたりしますよね。

    一例としてphpMyadminの話をしましたが、『そのプラグインは本当に必要か?』を吟味してプラグインの導入は行いましょう。公式ディレクトリだからと言って安心できないこんな世の中です。

    タイトルを書き換えるだとかちょっとしたことはfunctions.phpでやっつけた方がいいかもしれません。自分で書いたコードとプラグインの安全性、どちらが高いかなんて、個人の能力や規模や機能によってだいぶ変わってきますので何でもかんでもfunctions.phpで書いた方がいい!とは思いません。ただ、『このプラグインのこの機能だけ使いたい!』って場合は自分で実装した方が良いかも知れません。

    メンテナンスされていないプラグインは避ける

    WordPressは結構頻繁にバージョンアップが行われます。なので、その際にはプラグインも最新バージョンに対応させるとかはやるんですけど、それがされていないプラグインは、セキュリティホールも放置されている可能性があります。
    まぁ、プラグインの規模にもよるのであれですが、とりあえず、1年近く更新がないものは避けるようにしています。

    あんまり気軽にプラグインプラグイン・・・ってのも考え物ですね。
    案件によっては、VaultPress等の導入も検討が必要だと思います。

    サイト改ざんが身近になっている今、改めて考えないといけないことですね。。。。

  • WordPressを使ったWebサービスを作るとき、ログアウト後のリダイレクト先を変えたいって事がありました。特にユーザー機能は使うのに管理画面は見せたくない!っていうわがままな仕様の場合。

    そんなわけで。

    [php]
    function redirect_fix(){
    wp_safe_redirect("http://example.com");
    exit();
    }
    add_action(‘wp_logout’,’redirect_fix’);
    [/php]

    これだけ!

  • WordPressでWEBサービスやら、会員制サイトなんかを作りたいとき、やっぱり管理画面を見せたくないシーンがあると思います。そんなときに重宝するのが、wp_insert_post()とwp_update_post()、wp_delete_post()です。

    投稿を追加編集削除というよりは、データベースのthe_postsテーブルをそのまま触っているイメージの方があっている気がします。
    引数にデータ―ベースのフィールド名をキーとした配列を取るので、変数に困ったらデーターベースを覗いてみるのも良いかもしれませんね。後学のためにも。

    こんな感じで使います。
    [php]
    //投稿
    $post_id = wp_insert_post( array(
    ‘post_author’ => $user_id,
    ‘post_title’ => $post_title,
    ‘post_content’ => $post_content,
    ‘post_status’ => ‘publish’
    ) );

    //画像を投稿サムネイルに。
    set_post_thumbnail( $post_id, $post_photo_id);

    //画像に投稿を関連づける
    wp_update_post( array(‘ID’ =>$post_photo_id,’post_parent’ => $post_id ) );
    [/php]

    画像などのメディアも投稿として管理されているので、wp_update_post()でいじくる事ができます。
    コレをページテンプレートに組み合わせることで、管理画面外から投稿の追加・編集ができるページを作成することができます。

    ただ、当然のことながら、セキュリティにはかなり気を遣わないといけない事になりますね。
    PHPのhtmlspecialchars()や、WordPressのattribute_escape()等の文字列のエスケープや、wp_nonce_field()・check_admin_referer()でフォームからの投稿かどうかをちゃんとチェックする等はやっぱり最低限やっておきたいですね。

  • Cutstom Post Type Permalinks 0.7.5.1 をリリースしました。

    アップデート内容は、カスタム分類のアーカイブを
    “/投稿タイプ/カスタム分類名/ターム”

    に変更する機能のON OFFができるようにしました。

    あとは、少々のバグフィックスなどを行っております。

    http://wordpress.org/extend/plugins/custom-post-type-permalinks/

    何かあったら教えて下さいm(_ _)m Twitter:@Toro_Unit
    僕の技術レベルなどもあります故、すべてに対応できるかどうかは解りませんが、とりあえず頑張ります!

  • 秋口にショッピングサイトの案件があったのですが、EC-CUBEが苦手でどうにかWordPressでできないかなと思ったときに、Welcartで構築してみたのですが、コレがなかなか便利だったので、ご紹介。

    Welcart e-Commerce

    追加される機能

    • クレジットカード対応のショッピングカート+決済画面の導入
    • サイト会員の管理、会員専用の管理画面
    • 商品管理用画面の追加
    • ポイントの管理
    • お問い合わせフォーム
    • 送料管理

    等その他多数のショッピングサイトで使える機能がこれでもかっ!ってくらいに大量に追加されます。

    管理画面の変更点

    導入すると管理画面に、Welcart Shopと、Welcart Managementというメニューが追加され、ここで商品を追加・管理、受注の管理、決済モジュールの設定などができます。

    テーマのカスタマイズ

    導入すると、welcart_defaultというテーマが追加されます。それをカスタマイズするのも良いのですが、既存のテーマにカートを導入したり、自作のテーマに導入することもできます。

    また、デフォルトテーマのwp_themplatesにWelcartで追加されるページ(ログイン周り、会員ページ、決済ページ、個別商品のページなど)のテンプレートが入っています。コレがテンプレートファイルに入っていないと、プラグインのデフォルトのものが適応されます。Welcartのデフォルトテーマの子テーマとして作っても継承ができないので、このフォルダとその中身だけは個別に作ってあげる必要があります。

    また、Welcartの開発元が出しているWelcartホスティングを使うと、インストール、プラグインの初期設定、SSLの設定がすべて終わった状態で開発ができるので、導入のハードルもかなり低いです。
    WordPressでECサイトを作ってみたいと思っている方は、是非、検討してみて下さい。WordPressの資産をかなり有効活用できるので、開発もスムーズに行えますよ。

  • Custom Post Type Permalinksの0.7.4.1をリリースしました。

    といってもバグフィックスと若干のコードの書き直し(機能自体に変更無し)です。

    今回のアップデート内容

    • wp_get_archivesに関するバグを修正(type=postbypost)のときのエラー
    • カスタム分類の出力URLの不具合を修正
    • コードの若干の書き直し

    となります。

    このプラグインは、皆様のフィードバックにより、成り立っております。いつもありがとうございます。

    今後ともよろしくお願いします。

  • 以前WordPressのサイドメニューに『カテゴリ別の新規追加』を追加をするプラグインを作りました。という記事で公開していた、プラグインのブラッシュアップしたものを、公式ディレクトリに公開しました。以前、Add New Category Postという名前でこのサイトで公開していたヤツです。

    プラグインのページはこちら。Category Post

    公式ディレクトリ:http://wordpress.org/extend/plugins/category-post/

    カスタム投稿でやっつけるか、カテゴリーで良いんじゃないかと悩むときはたくさんあると思いますが、そのときの選択の一つとしてご利用頂ければ幸いです。

    機能

    WordPressの管理メニューの“投稿”のサブメニューにカテゴリーごとの記事を追加するリンクを追加します。ついでに元から有る、新規追加を非表示にします。スクリーンショットの通りです。

    メールフォームや、Twitter等でフィードバックを頂ければ幸いです。よろしくお願いします。

  • 毎度おなじみ、Custom Post Type Permalinksのバージョンアップを行いました。

    最新版はこちら:http://downloads.wordpress.org/plugin/custom-post-type-permalinks.0.7.3.zip

    今回の変更点は、主に、データの保存に関する部分の修正です。

    フィードバック等は@Toro_Unitまで頂けたら嬉しいです。

  • WordPressでマルチサイト機能を使って規模の大きいサイトを作ったりすることはよくあるのですが、トップページの処理が結構面倒です。

    home.phpやfront-page.phpを使う場合、同一テーマだと、子サイトのトップページにも適用されて結構結構悲しいことになったり。

    そんなときの対処法として。

    • フロントページの変更を使う
    • 子テーマを使う

    固定フロントページを作る

    コレが一番スマートなんじゃないかなと思います。
    toppage.php等のテンプレートを作成しておき、その後、ルートサイトの方で、固定ページを作成して、先ほど作ったカスタムページテンプレートを適用します。

    その後、設定→表示設定から、フロントページの表示のところを、固定ページに変更し、フロントページの項目を先ほど作ったページに変更します。

    子テーマを使う

    子テーマを使って、home.phpやら、front-page.phpを上書きします。そして、子テーマの方をルートサイトの方のテーマにセットします。いまいち直感性に書けるかもしれません。

    サイドバーが違う場合など、トップページの変更点が多い場合、こっちの方が良い場合もあります。

    ページを作成しないで良いので、wp_list_pages等を普通に使えます。

    WordPressはやっぱりブログがベースのCMSとして作られているので、ちょっとした工夫は必要ですね。

  • 先日 Word Camp Tokyo 2011 で、宮内隆行さんのWordPress プラグインを作って世界と交流しようぜ!というセッションがありました。

    セッションのUSTREAMです。
    また、スライドはこちら:WordCamp Tokyo 2011でしゃべって来ました。

    WordPressでのサイト制作で使ったコードをブラッシュアップして後々自分で使えるようにプラグイン化してあったのですが、いっちょやるかー!って一念発起して、Custom Post Type Permalinksを公式ディレクトリにアップロードしました。そのときにやったこと、セッションを聴いた上で自分でやってみて色々躓いたこと、その後のこと、思ったことなどをつらつらと書き連ねていきます。

    1. wordpress.orgにログイン
    2. プラグインの登録
    3. Subversionの設定
    4. プラグインの公開準備 ※2012-01-04:多言語対応について追記しました。
    5. tagsの作成、公開
    6. フィードバックへの対応

    WordPess.orgにログイン

    WordPress.orgにアカウントを作ります。コレが日本語フォーラムでも、使われるので、ちゃんとした名前をつけて下さい。
    登録はこのページでできます。:http://wordpress.org/support/register.php

    プラグインの登録

    WordPress.orgにログインしたら、Plugin Directoryの左上のメニューからDeveloper Center→Add Your Pluginにアクセス。登録処理ができます。
    入力項目は3つ

    • Plugin Name (required) :プラグイン名 *必須
    • Plugin Description (required) :プラグインの説明 *必須
    • Plugin URL :プラグインのサイト *入れなくても良い

    です。Plugin Name以外はちゃんとして無くても大丈夫です。宮内さんも仰っていましたけど、Plugin Description には、プラグイン名を入れました。
    しばらくすると(半日くらい)WordPress.orgからメールが来ます。ここにSubversionのリポジトリなども載ってます。

    Subversionの設定

    普段Windowsで作業しているので、TortoiseSVNを導入します。ダウンロード:http://sourceforge.jp/projects/tortoisesvn/
    TortoiseSVNの導入や、使い方はこちらが詳しいです。なんちゃってTortoiseSVN(Subversion)の使い方シリーズ [SVNマニュアル擬き]

    プラグインの公開準備

    公開準備で主に頑張るコトは、

    • ライセンスの記述
    • 多言語対応
    • readme.txtの作成
    • デバッグモードでのチェック

    ですね。

    ライセンスの記述

    公式ディレクトリに公開する場合、ライセンスはGPLにしないといけないようです。なので、ライセンスの明示をしなくてはいけません。僕の場合はコードに
    [php]
    /*
    Copyright 2011 Toro_Unit (email : [email protected])
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
    */

    [/php]
    こんな感じで記述しています。

    多言語対応

    コレは、管理画面があったりするようなプラグインとかだと発生する作業です。やっぱり海外の人も普通に使ってくれます。何件かフィードバックも頂きました。そんなわけで、コレも必須の作業になってきます。

    翻訳には、moファイルというファイルが必要なのですが、詳しい作成手順があったので、こちらを参照。poEdit で翻訳ファイルを作る « iDeasilo(Contact Form 7の作者さんのサイトです。)

    また、翻訳の手順は、翻訳ファイルを用意してプラグインを日本語化する | WordPressで企業ウェブサイト作成・商用ホームページ制作 WordPress Go Goを参照。

    ただし、 load_plugin_textdomain()の仕様が2.7から変わっていて、第2引数は非推奨になったので、
    [php]
    load_plugin_textdomain($domain,false,プラグインのwp-content/pluginsからの相対パス);
    [/php]
    とします。第3引数は省略すると、wp-content/pluginsに置かれてるファイルをさがします。

    2012-01-04追記
    プラグインの説明も日本語化できるようです。wokamotoさんに教えて頂きました。
    WordPress Plugin 作者に覚えておいて欲しいこと

    プラグインのヘッダーのコメントにText DomainとDomain Pathの2行追加します。
    [php]
    /*

    Text Domain: 多言語化ファイルのドメイン
    Domain Path: プラグインのwp-content/pluginsからの相対パス
    */
    [/php]
    こうすると、Descriptionの項目が日本語化されます。WordPressでのプラグインの一覧や、検索のときに日本語化されて表示されます。意外に盲点なのでこれはやっておきたいです!

    readme.txtの作成

    プラグインを公式ディレクトリに上げるときには意外に重要なreadme.txt。サンプルがhttp://wordpress.org/extend/plugins/about/readme.txtに載っているのでとりあえず、コピペ。この内容が、プラグインのページにそっくりそのまま反映されます。何度かStable tagの項目を書き換え忘れて新しいのは上がっているのに、推奨バージョンが変わらないとかいうことが結構ありました。なので要注意。細かい事は、readme.txtのサンプルを読めばだいたい解ります。英語で大変ですが、どうせ英語で書くはめになるので、頑張って読んでみましょう。

    デバッグモードでの検証

    つってもやることはたいしたことじゃないです。wp-config.php定数を
    [php]
    define(‘WP_DEBUG’, true);
    [/php]
    に書き換えるだけです。そうすると今まで表示されてなかったエラーがじゃんじゃん出てきます。コレはバグの温床になったり、環境や他のプラグインの影響などで不具合を起こすことがあるので、頑張ってつぶします。エラーが起こってる箇所がプラグインファイルじゃないとしても、アクションフックなどの影響で場所が変わっているだけで、確実にそのエラーはプラグインのせいで起きてます。頑張ってつぶしましょう。

    tagsの作成、公開

    いよいよ公開です。tagsにコミットします。プラグインディレクトリを右クリックしてtortoiseSVN→ブランチ/タグの作成から、タグを作成します。バージョン番号でtagの作成をするのですが、バージョン番号はなるべくシンプルに、また数字と.だけでつけた方が良いと思います。この数字を比較してプラグインのアップデートがあったかどうかを確認しているようです。
    コミットして10分くらいすると、ちゃんと”Download Version”のボタンが出て来ます。たまに、更新日時が変わらない場合もありますが、僕の場合はほおって置いたら3日くらいでなおってました。

    これで、Plugin Developerデビューです。おめでとうございます。この瞬間はなんだかんだで嬉しかったです。

    フィードバックへの対応など、その後

    ただ、公開はゴールじゃないんです。むしろやっとスタートラインに立ったということなのです。
    プラグインの規模にもよりますが、ここから、1週間くらい僕は、バグ報告、要望などのメールが結構来ました。

    「これからが本当の地獄だ・・・」と脳内でベジータ様がつぶやき出したりしますが、ここがいちばん公開してよかったなぁ。と思うことでした。

    ただ、要望を出すだけじゃなくて、お忙しいなか、時間を割いて、プラグインのテストに付き合ってもらえたり、「ここのコードこうした方がいいよー」というかんじでコードを送ってくれたり。
    もっとちゃんとデバッグしてから公開しろとか若干怒られるかと思ってたり結構内心ビクビクしていたのですが、そんなことは無く、ホント、メールやTwitterの向こう側にいる方々に大変助けられました。ていうか正直そんなにレスポンスあるのかよ!ってびっくりしました。

    公開してからの方が、遙かに開発速度は上がりました。バグも自分で探しきれないことは多々あるので、本当に助かります。また、要望なども僕みたいな一人きりで作っている人間からしたら有り難いことです。実装するか、できるかはともかく。。。。
    また、フォーラムの方でもいくつかトピックスが上がっていました。しかし、こちらは全部英語で現在解読に四苦八苦状態です。誰か助けて下さい(涙)

    あと、公開して良かったなと思うことは、ブログなどで取り上げてもらったりしたことですかね。

    やっぱり誰かにこれいいよって言ってもらえるのは嬉しいですよね。

    かちびと.netさんの記事から抜粋しますが、

    フィードバックも開発に必要不可欠なのですから、使って感想や問題を開発者に伝えるだけでも、あなたも開発者の一員と言えるわけです。

    はまったく持ってその通りだと思いました。「フィードバックしたらうざいとか思われるかな・・・」とか思っていたこともありましたが、作り手になるとフィードバックというのは本当に有り難いです。趣味半分仕事半分みたいな感じで作っているものなので結構モチベーションの維持は結構大変なのですが、感想をブログに書いてもらうとかでもかなりモチベーションの維持になります。

    まぁ、長々と書いてきましたが、プラグインそのものの作成自体はそこまで難しいものではありません。基本的にはfunctions.phpに書くのと変わりません。
    自分用にプラグイン化して公開するでもいいと思います。メンテナンスが楽になるので。僕も最初はそんな気持ちで始めました。そしたら、初めて行ったWordCampで「プラグイン作ってたりするよね?」と言ってもらえて話のネタになったり、先ほども書きましたが、フィードバックを色々頂けたりで嬉しくなったり、誰かの役には立ってるんだなとか思えたり。サイトのアクセスが増えたり。とささやかな幸せをいくつか味わうことができました。

    『プラグインがないから、しょうがない、functions.phpで頑張るか。』って経験をお持ちの方って結構多いって思うんです。そんな人は是非プラグイン化してみることをおすすめします。GPLなんだから、元から有るプラグインをフォークしても良いと思うし、似たようなプラグインがあっても日本人が作っているってだけで、結構違うものです。

    きっとささやかな幸せを味わうことができますよ。その積み重ねがWordPressなりオープンソースのソフトウェアなり、コミュニティをより良いものにしていくと思うし、そうやって盛り上がれば最終的に自分自身にも恩恵はあると思います。

    あ、今更ですが、公開中のプラグインです。

    フィードバック、ご意見ご感想、お仕事のご依頼などは@Toro_Unitか、Contactに頂けたら嬉しいです。また、英語のフォーラムを解読してくれる方などいましたら、ご協力頂ければ幸いです。m(_ _)m

  • Custom Post Type Permalinks 0.7 をリリースしました。

    変更点は、

    • コードの全面書き直し。
    • 管理画面をパーマリンク設定に統合
    • カスタム分類に対応

    です。

    今後の予定としては、

    • カスタム投稿のカスタムスラッグへの対応(すみません。未だできてません・・・)
    • WordPress3.3で追加されたPointerでの機能の表示

    等です。

    0.6.2の公開時はフィードバックをたくさん頂きましてありがとうございました。
    一応、要望頂いた管理画面や、カスタム分類等はちゃんと実装してあると思います。

    また、何かありましたら、@Toro_Unitまで、ご連絡頂ければ幸いです。

  • Custom Post Type Permalinks公式ディレクトリに公開しました。

    また、バージョンも0.6.2にアップデートしました。

    プラグインのデバッグにmotorajiさんに多大なご助力を
    頂きました。ありがとうございます。http://motoraji.com/で活用して頂いてます。

    公式ディレクトリ:http://wordpress.org/extend/plugins/custom-post-type-permalinks/