メニュー

WordPress使ってても巨人の肩に乗れ

高橋文樹 高橋文樹

この投稿は 14年 前に公開されました。いまではもう無効になった内容を含んでいるかもしれないことをご了承ください。

さて、先日「忠実なファンは1000人で足りるか〜電子書籍時代の皮算用〜」というエントリーをアップしてもさして話題になっていない不肖高橋ですが、己の電子書籍売上をアップすべく、またWordPressのプラグインを作って公開しました。プラグイン名を間違ったまま公開するという大チョンボをやらかしましたが、まだ9人しかダウンロードしてないしいいよね。

新プラグインGianism

http://wordpress.org/extend/plugins/gianism/

プラグイン名は「ジャイアニズム」と読みます。これは簡単に言うと、WordPressにTwitterやFacebookでログインできるようにするものです。詳しくはこのサイトのログインページを見てみてください。

ログインページにボタン追加
ログインページにボタン追加

実はSocial Connectというほぼ同じ機能を提供するプラグインがあったりしますが、おそらく100年待ったところで日本のサービスには対応しないだろうなと思ったので、作りました。ただ、作ってはみたものの、OAuthで接続する場合のライブラリがあったりなかったり(あってもPEARだったり)でめんどくさくなったので、mixiなどにはまだ対応していません。すいません。「mixiのヘビーユーザーってどうせ電子書籍買わないんじゃないの」という邪推があったのは内緒です。こちらもあわせてすいません。

Gianismの見所

というわけで、機能的に特に目新しいところはないのですが、お勉強のために車輪の再発名をしたわけではありません。このプラグインはそもそも僕のサイト用に作ったので、「Twitterやmixiのように外部サイトに対して認証機能を提供しているが、メールアドレスは渡さないサービス」向けの機能を備えています。まあ、他のプラグインをよく見ていないので、もしかしたらそういう機能があったのかもしれませんが。

で、どうなるかというと、GianismはWordPressで内部的に使われるメール送信関数wp_mailをフックし、そのメッセージを保存します。送信されるはずだったメールはユーザーのプロフィールページに一覧として表示され、ちょど簡易Webメールのような感じになります。

プロフィールページにメッセージ一覧
プロフィールページにメッセージ一覧

そしてさらに、登録した外部サービスを経由して、「高橋文樹.comだけど、あなたにメッセージがあるよ http://example.jp/wp-admin/profile.php 」という具合にメッセージがある旨を教えます。

TwitterにDM送信
TwitterにDM送信(日本語化は完了してます)

僕が作っている電子書籍販売用プラグインLiterally WordPressは振込にも対応しているため、メール送信が必須です。というより、振込先をメールしないとほぼ確実に振り込んでもらえません。かといってTwitterは140文字以内という制限があるためメール全文をそのままDMも無理…というわけで、こんな仕様になりました。

一応、検証してはいますが、届かない場合もあるみたいです。この機能はβ版という位置づけにしておきます。

あと、地味な機能ですが、FacebookのファンページでWordPressを使っている場合、その人がファンかどうかも判別できる関数もつけときました。僕のファンページはこちらです。

ECショップ系のプラグインを使っている方は、うまくいけば連携できると思います。

Gianismの名前の由来

「Facebookアプリ開発徹底入門」ePub買ってみた雑感でもちょろっと書きましたが、「お前のものは俺のもの」というジャイアニズムと、プログラミングの世界でよく言われる格言「巨人の肩に乗れ」の二つをかけました。その結果としてずいぶん滑った名前になりましたが、もう出しちゃったからしょうがないです。

Gianismの今後

とりあえずログインまではできたのですが、なるべくよそのメディアでバズを作るような機能を盛り込んでいきたいと思います。と同時に、国産サービスでOAuthを公開しており、なおかつ良さげなAPIを備えているところも追加していきます。こんなのがあると便利ですかね。

  1. WordPress内の特定のURLをいいねしてくれたかどうかわかる
  2. twitterでURLを含んだツイートが合計100RTされたかどうかわかる
  3. 上記の指標を累計して、ファンの忠誠度を計る

なんか嫌らしい機能ばっかりですが、がんばって実装したいと思います。

困ったときは

使ってみて動かなかったら、この記事にコメントしてください。メールでも一応お答えするようにしますが、コメントで公開した方が同じ問題で困っている人に役立つので。

その他雑感

先述した「千人の忠実なファン」モデルですが、僕個人にはあんまり向いてないかなーという気もしています。僕と親しい人にはバレているのですが、ファンサービスに向いている人間ではないのです。

  • 人からメールが来ても応えない場合が結構ある
  • 誘われたら行くけど自分から誘わないし誘ってくれとも言わない
  • 自分が持っている名刺全部にBCCでメール送らない

軽く列挙しただけでもこれだけの悪習を備えていますし、もう30歳も超えて矯正する気もないので、「高橋文樹のことを大好きで出すものを何でも買ってくれるファン」を増やすのは正直難しいんじゃないかと思っています。

ただそうはいってもファンを増やさないことには飢えてしまうので、「高橋文樹のことがちょっと気になっていて、何か出したら買ってみようかなと思ってくれるファン」を増やすことにしました。

ファンとのリレーションを保つために「自分のマメさ」とかは信頼できないので、なるべくプログラムなどで外部化したいと思います。乞うご期待。

文責・ 高橋文樹

小説家です。最近はWebの技術を学びつつ、これからの文芸に何が出来るのかを模索しています。

すべての投稿を見る

“WordPress使ってても巨人の肩に乗れ” への47件のフィードバック

  • szk

    szk

    はじめまして。

    ずっと探していた機能のプラグインだったので、この記事を見つけてすぐにインストールしてみました!…ですがプラグインを有効にしてもログイン画面にボタンが追加されません…。
    もし、思い当たる理由がありましたら教えて頂けませんでしょうか。WordPressのバージョンは3.3.1です。

  • プラグインを有効にしたのち、設定画面で色々と情報を入力する必要があります。
    ユーザー > 外部サービス連携へ移動してください。

  • マルオ

    マルオ

    まだまだ、知識不足満載のものです。
    今webサービスを作っているんですが、このプラグインを使わせていただいています。
    それで、とりあえずFacebookでのみログインできるようにしているのですが、リダイレクトページをフロントページか、ユーザーページ(author.php)に変更したいのですが、そういったことは可能でしょうか?

  • こんにちは。

    いまのところ、リダイレクト先を変えられるようにはなっていなので、次のアップデートで変えられるようにしておきます。

  • kiyofumi oshima

    kiyofumi oshima

    素晴らしいプラグインをありがとうございます。
    一点質問させてください。BuddyPress での使用は可能でしょうか?

  • こんにちは。僕はBuddyPressを使っていないので、未検証です。

    試していただいて、動いた場合はご報告いただけると助かります。

  • mishimax

    mishimax

    素晴らしいプラグインだと思い、今試しているところです。気がついたことをご報告いたします。

    twitterアカウントとの連携についてですが、
    Wordpress Download Manager Plugin: (http://www.wpdownloadmanager.com/)
    というダウンロードを管理するプラグインと一緒には使えないようです。

    Facebookとの連携機能は一緒に使えました(ダウンロードされる方のプロフィールが分かるようになりそうです)。

    Google アカウントとの連携は、G+に興味がないので試していません。

    上、とりいそぎ、ご報告まで。

  • Gaoga_sh

    Gaoga_sh

    素晴らしいプラグインを検索サイトで知り、試しているところです。
    使っている中で、わからないところがあるので質問させてください。
    Twitterでこのプラグインを使う時に、
    Twitterアプリケーションで設定をし、設定画面でコードを入力したのですが、
    「Twitterでログイン」ボタンを押すと、ログインではなく、
    連携アプリを承認というボタンが出現します。
    この場合はプラグイン内部を編集する必要があるのでしょうか?
    よろしくお願いします。

  • そういう仕様です。ログインまでの基本的な流れは以下の通りです。

    1. Twitterのログイン画面に移動(すでにログインしている場合は2へ)

    2. サイトまたはアプリケーションの承認画面が表示される

    3. 同意すると元のサイトに戻り、ログイン完了。

    これはTwitterに限らず、Facebookでもmixiでもgoogleでも一緒です。OAuthと呼ばれる仕組みに共通の仕様です。

    もしTwitter側で確認画面を出すことなくログインできてしまったらマズいですよね。そのため、TwitterやFacebookでは外部アプリケーションを承認性にして管理できるようにしています。ちなみにmixiは毎回確認画面が出ます。

  • Gaoga_sh

    Gaoga_sh

     御返事ありがとうございます。
    すみません、僕の説明が悪かったみたいです。申し訳ありません。
    「Twitterでログイン」ボタンを押すと、
    このサイトからTwitterにアクセスするとURLにauthenticateがあるのですが、
    私が試しているサイトではどうしてもauthorizeがでてしまい、「連携アプリを認証」ボタンを押すと、元のサイトに戻るだけでログインされてないようにみえます。

    何度も投稿して申し訳ありません。

  • ・Twitterに移動した後、アプリケーションとして設定した項目が表示されていますでしょうか。たとえば、このサイトでは「高橋文樹.com」というアプリケーションの情報が表示され、僕の顔写真が出るのですが、それと同じになっていますか?

    ・authenticateとかauthorizeというのは、URLにそういう文字列が含まれているという意味でしょうか。
    ・「ログインされていないようにみえます」とありますが、基本的には認証に失敗するとJSでエラーが出るようになっています。それさえ出ないということでしょうか。JSのエラーが出ていないかどうかも確認してみてください。また実はログインできていて、wp-adminに移動できたりしませんか?

    基本的に思いつくのはこれぐらいですね……

  • Gaoga_sh

    Gaoga_sh

    本当に何度も申し訳ありません。
    1.Twitterに移動すると、アプリケーションとして設定した項目は表示されますが、このサイトでは上部に「
    あなたの Twitter アカウントを使って他のサイトやサービスにログインすることができます。こちらでログインすれば、Twitter パスワードを入力せずに高橋文樹.comを利用できます。」があるのですが、私のサイトからでは表示されません。あと、ユーザー名・パスワード欄下の「ログイン」が私のサイトでは「連携アプリを認証」になっています。2.>authenticateとかauthorizeというのは、URLにそういう文字列が含まれているという意味でしょうか。そうです。そのような文字列があります。3.JavaScriptでのエラーも表示されません。wp-adminで確認もしてみたのですが、やはり登録されていませんでした。

  • うーん、考えられるのは他にTwitter連携を使っているプラグインがあるかもしれないということですね。それとバッティングしているのかも。

    説明書きが表示されないのは、入力していないからかもしれません。

    https://dev.twitter.com/apps

  • Gaoga_sh

    Gaoga_sh

     「Quick Comments」というプラグインを停止すると、無事ログインすることができました。
    ご迷惑をおかけしまして申し訳ありませんでした。
    本当にありがとうございました。

  • Yu_uki

    Yu_uki

    はじめまして。
    とっても便利そうなプラグインなので、
    今いろいろ試させて頂いているところです。

    質問なのですが、こちらのプラグインを使ってTwitterでログインすると、wordpress上に新しいユーザーが追加されますよね。で、その後にユーザーがTwitter上でユーザー名を変更した場合、wordpress上では最初に登録した時点でのユーザー名から変わらないようです。

    なんとか表示名だけでも同期したり、もしくはユーザー名を変えてログインした場合は新しいユーザーとしてさらに追加するなどして、この問題を解決する方法はないでしょうか?

    よろしくお願い致します。

  • 「ユーザー名を同期させる」というのはこのプラグインの本質とは異なるものなので、実装していませんし、今後も予定はありません。

    実現する方法はあるのですが、ちょっと今ソースを見直している時間がないので、ヒントだけ書いておきます。※要PHPの知識

    1. ログインフックでユーザーを取得

    2. TwitterのユーザーIDを取得

    3. TwitterのOAuth APIを叩いてスクリーン名を取得

    4. スクリーン名が変わっていた場合は同期させる

    だいたいこんな感じです。

  • Yu_uki

    Yu_uki

    機能としては実装されていないですね。PHPの知識はちょっと自信ないですが、頂いたヒントをもとに調べながら試してみようと思います。

    忙しい中返信ありがとうございました。

  • yokko

    yokko

    以前、ユーザー登録の敷居を低くする プラグインとして、紹介して頂き、設定しているところなのですが、mixiのトークン設定についてお伺いいたします。
    取得したrefresh_tokenなどはテキストボックスに入力して、mixiで認証ボタンを押すのかと思ったのですが、テキストボックスは灰色で入力不可になっています。取得したトークンをhttps://api.mixi-platform.com/2/people/@me/@self?oauth_token=のようにしてAPIにアクセスするとmixi Developer Centerに書いてありますが、そのように考えればよろしいのでしょうか。手順を少し教えていただければ助かります。

  • mixiはcliend IDとsecret IDを入力して「mixiで認証」ボタンを押すと、リフレッシュトークンを勝手に取得してくれると思うのですが、ボタンはないでしょうか。

    もしかしたら、バグがあるかもしれないので、ちょっと見てみます。

  • yokko

    yokko

    cliend IDとsecret IDを入力してmixiで認証ボタンを押すと、mixiのログインページに飛びます。そこでログインすると、アプリを使う許可というのでしょうかがでて、承認すれば、トークンを取得するためのコードが得られる一連の流れです。
    管理ページには、
    リフレッシュトークン (リフレッシュトークンが無効です。下のリンクから再設定してください。)と表示されています。
    よろしくお願いします。

  • こんにちは。gianism、かなり良いですね。以前自分でガリガリ実装してみた事はあるのですが、gianismの方が遥かにスッキリしています。
    ところで、mixi/mixi-controller.php
    の202,222行目付近で、
    update_user_meta($use_id, $this->umeta_refresh_token, $response->refresh_token);
    と言う形で、$use_idという変数名が使われていますが、これは$user_idでなくても良いのでしょうか?
    もしかすると、下のrefresh_tokenと関係があるのではないかと思いまして・・・

  • ありがとうございます。これはただのタイポですね。リフレッシュトークンは実のところ使っていない(異常に期限が短い)のですが、次のアップデートで直しておきます。

  • noosa

    noosa

    初めまして、こんにちは。すばらしいプラグインをありがとうございます。facebookログイン後のリダイレクトについて伺いたいのですが。サイドバーwidgetにfacebookでログインボタンを設置しております。そのボタンを押してfacebookのログインに飛びログイン後、今度は、wordpressのログイン画面に戻るのですが、 /gianism/functions.php にトップページにリダクトする記述
    function _my_redirect_to($url){
    return home_url();
    }
    add_filter('gianism_redirect_to', '_my_redirect_to');
    をすれば、wordpressのログイン画面には行かずログインした状態でトップページに行けるのでしょうか?
    上記設定をいたしましても、トップページに飛ぶことができず困惑しております。
    アドバイス頂けないでしょうか。
    よろしくお願いいたします。

  • すみません、その部分はフィルターかけ忘れていたのです。Githubの最新版は修正済みですが、まだ公開していませんでした。そのうち公開します。

  • maruo

    maruo

    こんにちは。とってもお世話になっております。noosa と同じ件で困っています。そして、締切が近づいているので、ホントに申し訳ないんですが出来ればすぐにでも公開して欲しいです。心からお願い致します。。。

  • maru

    maru

    Githubの最新版いただいてできました!!ありがとうございます!!

  • may23disqus

    may23disqus

    Gianismを使わせていただいております。
    FacbookとTwitterでログインできるように設定し、実際に正常稼働していたのですが、4月16日あたりからGianismが稼働しなくなってしまいました。

    Wordpressログイン画面にボタンを設置していたのですが、Twitterボタン以降が表示されないという状態です。ソースを見てもFacebookボタンの下からソースが消えており、Wordpress標準のログインボタンも表示されませんでした。

    また、Wordpressログイン画面以外に設置した場合も、Twitterボタン以降が表示されません。

    Gianismプラグイン設定からTwitterを無効にする(Facebookのみにする)と正常に動作します。

    時期的にTwitterAPIのテストが実施された前後と重なるのですが、なにかアドバイスをいただけませんでしょうか。
    よろしくお願いいたします。

  • まず、バージョンは最新でしょうか。

    私のサイトでは動いているので、とりあえずトークンを再取得して、再度保存してみてください。

    それでもダメだったら、本格的に調査してみます。

  • may23disqus

    may23disqus

    ご返信ありがとうございます!
    取り急ぎ、バージョンは1.3.0です。
    1週間ほど前にWordpress管理画面から検索しインストールしました。
    トークンについても何度か再取得、再保存はしてみたのですが変化はありませんでした。
    高橋様のサイトでは正常とのことで、私の環境に問題がありそうですね。。。
    もう少し調べて、改めてご連絡したいと思います。

  • may23disqus

    may23disqus

    お世話になっております。

    その後いろいろいじった結果、無事に動作するようになりました。
    これが原因、というのが曖昧なのですが、
    同様のプラグイン(Twitterアカウントでログインするもの)が残したデータベースのテーブルを全て削除したところ動いたように思います。
    お騒がせいたしました。

  • mogumogue

    mogumogue

    とてもいいプラグインですね!
    質問ですが、登録されたユーザーのパスワードってどうなるのでしょうか。
    たとえばFACEBOOKでログインしたあと、別途WPにユーザーが登録されますよね。そのユーザーIDでログインをすることってできるのかなあ、と思ったので。FACEBOOKのID、PWでログインを試みてもできなかったし、WPのログインIDとFACEBOOKのPWを使ってログインを試みてもできなかったんです。(入力間違い??)
    FACEBOOKのアカウントを失ったときに、ユーザーはどうなるのかなあと思ってのことでした。

  • Facebookの認証情報ではログインできません。パスワードはランダムに生成したものを設定するようにしています。サービスの質にもよりますが、パスワードは適宜変えてね、という感じで誘導してください。

    「Facebookのアカウントで作ったアカウントなのだから、Facebookのアカウントを失ったらもうしょうがないんじゃないか」というポリシーになっています。

  • passat

    passat

    はじめまして。素晴らしいプラグインですね。さらにPAYPALアカウントでログインすることも可能になると、いいと思います。

  • may23disqus

    may23disqus

    お世話なっております。

    Wordpressの管理者ページからGianism1.3.1に更新した際に、以下のエラーがでたのでご報告致します。
    私の環境のみの問題でしたら申し訳ございません。
    wordpress3.5.1
    Gianismプラグイン 1.3 →1.3.1
    ソーシャルのログインボタンはログインページではなく任意の場所に表示できるようにしています。

    プラグインのバージョンアップ後に以下のエラーコードが表示。
    Fatal error: Class 'OAuthSignatureMethod_HMAC_SHA1' not found in /home/xxxxxxx/wp-content/plugins/gianism/sdks/twitter/twitteroauth.php on line 63

    バージョン1.3のtwitteroauth.phpを上書きすると、以下のエラーコードが表示。
    Fatal error: Cannot redeclare class OAuthException in /home/xxxxxxx/wp-content/plugins/gianism/sdks/twitter/OAuth.php on line 8

    同じくバージョン1.3のOAuth.phpを上書きするとプラグイン更新前の正常な動作に戻りました。

    以上です。

  • 該当する箇所を見てみましたが、特に変更点はありませんでした。
    OAuth.phpは今回のアップデートで変更していません。
    もしかしたら、アップロードエラーとかではないでしょうか。
    自動アップグレードを利用したのか、それとも手動でFTPアップロードしたのかによっても原因は変わってくるかと思います。

    なお、twitteroauth.phpはバージョンが古いままなので、新しい物に変更されることをお勧めします。もし上書きしてエラーが置きたらまた教えてください。

  • may23disqus

    may23disqus

    お世話になっております。

    最初自動アップグレードで上記のエラーがおき、GithubからダウンロードしたものをFTPでアップロードしたのですが同様のエラーが起きました。

    アップロードエラーは未確認でしたので、これが原因だったかもしれません。

    ご指摘のあったtwitteroauth.phpをGithubから最新のものに差し替えたところ、エラーは起きず正常に動作しております。

  • 正常動作したようでなによりです。改行コードか、なにかでしょうか...

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

  • aki

    aki

    はじめまして。素晴らしいプラグインを作成頂きありがとうございます!
    JSファイルを最小化するWP-Minifyプラグインがエラーを吐くようになったのでソースを見てみると、

    と言った具合にディレクトリが一箇所"//"となっており、こちらがエラーの原因でした。
    WP_Gianism.phpを修正してエラーは解消されましたが、次回のアップデートの際に対応して頂けるとありがたいです。

  • 情報ありがとうございます。次回アップデートで修正します。

  • pdfeer

    pdfeer

    googleでの認証完了後、管理画面のプロファイルページに飛ぶのですが、そうではなくサイトのトップページに飛ばすには「カスタマイズ」に書かれているやり方でいいのですよね?
    これはテーマ内のfunction.phpに書けばいいのでしょうか?
    試したいのですがgoogleで一度登録してしまうと、管理画面からユーザーを削除しても、認証画面がスキップされてしまうもので。。

  • pdfeer

    pdfeer

    テーマ内のfunction.phpでうまくいきました。どうもお騒がせしました。

  • koba

    koba

    facebookに接続する際に追加情報の取得がうまくいきません.

    functions.phpに上級者向けにある

    switch($service){
    case 'facebook':
    //Save Facebook bio as user description
    if(isset($data['bio'])){
    update_user_meta($user_id, 'description', $data['bio']);
    }
    break;
    }

    をためしてみたのですが,どうもdata構造がarrayではないとのエラーも出ます.
    print_rで$dataを表示してみましたが,'bio'をキーとする要素はありませんでしたので,別途情報を取得する必要があるのではと思うのですが,やり方が分かりません.

    bioやnameなどの情報はどのようにして取得すればよいのでしょうか?
    よろしくお願いします

  • あれ、$dataって書いてましたか。すいません、間違ってました。

    渡されてくるデータは Facebook PHP SDKのインスタンスです。
    $user_profile = $data->api('/me','GET');

    とかやると、現在ログインしているユーザーのFacebook上でのデータが取得されるかと。

    詳しくはSDKを見てください。
    https://developers.facebook.com/docs/php/howto/profilewithgraphapi

  • koba

    koba

    おかげさまで解決しました!
    ありがとうございます!

    $dataはfacebook php sdkのインスタンスだったのですね.

  • blow

    blow

    お世話になります。

    先日、buddypressを利用した2つのウェブサービス(仮にAサイト・Bサイトとします)を立ち上げ、その両方に本プラグインをインストールさせていただいたのですが、Facebookアカウントでログインができませんでした。

    恐れ入りますが、原因がお分かりになられましたら、ご教授いただけませんでしょうか?

    1.開発者のFacebookアカウントでは、Aサイト・Bサイトともに正常にログインできる。
    (ここでいう開発者とは、facebook開発者にて登録しているFacebookアカウントです)

    2.別のFacebookアカウントでは、Aサイトは正常にログインできるが、Bサイトでは「おや、認証できませんでした。このFacebookアカウントはすでに別のアカウントに接続されています。」と表示されてログインできない。

    3.「2」でログインができなかったアカウントのFacebook設定画面でBサイトのアプリを削除しても、同じエラーがでる。

    4.Bサイトのbuddypressと本プラグイン以外を全て停止してもエラーがでる。

    5.BサイトのFacebookのAPIを何度作りなおしてもエラーがでる。

    AサイトとBサイトのWordPressのバージョンおよび本プラグインのバージョンは同じです。
    また、AサイトとBサイトはバーチャルホストできられた同じサーバです。

    恐れ入りますが、お知恵をお貸しくださいませ。
    何卒よろしくお願いいたします。

すべての投稿を見る

高橋文樹ニュースレター

高橋文樹が最近の活動報告、サイトでパブリックにできない情報などをお伝えするメーリングリストです。 滅多に送りませんので、ぜひご登録お願いいたします。 お得なダウンロードコンテンツなども計画中です。