このブログは今後は更新されません。FE.labsにてWordPress向けの記事も更新してゆきますのでよろしくお願いします。
今後このドメインは、ファーストエレメントのWordPress関連業務のブランドサイトとして近くリニューアルする予定です(2012/8/24)。
カテゴリ&タグ&カスタムフィールド&年月&キーワードで絞り込み検索ができるプラグイン『FE Advanced Search』

Category:カスタマイズ/ハック

WordPressダッシュボードのSSL化をユーザー単位で設定する

2011-12-25
wordpress-ssl-option-for-each-user

WordPressダッシュボードのSSL化を、ユーザー単位で有効/無効に設定する方法を見つけたのでメモ。大したネタではありませんが。。

ダッシュボードやログインフォームにSSLを適用する時によくやるのはwp-config.phpに下記のように定数をセットする方法ですが、これだとすべてのユーザーに問答無用でSSLが適用されてしまいます。

define(‘FORCE_SSL_ADMIN’, true); //ログインフォーム、ダッシュボードともにSSL化

または

define(‘FORCE_SSL_LOGIN’, true); //ログインフォームのみSSL化

この前者に相当する設定を、ユーザー毎にそれぞれのプロフィール画面からチェックボックスで行えるようにします。やることはいたってシンプル。お使いのテーマのfunctions.phpを開き、最後の行あたりに下記を加えます。

add_action( ‘personal_options’ , ‘use_ssl_preference’ );

以上で、各ユーザーのプロフィール画面「ツールバー」の次に「https を使用する」という項目が現れます。チェックを入れて更新すると即座にhttps付きのURLにリダイレクトされます。その後、そのユーザーがダッシュボード内にアクセスする時と、ログインフォームを送信する時は常にSSLがオンになります。

設定はユーザー単位で可能。phpMyAdminでDBを見てみると、usermetaテーブルに各ユーザー毎に「use_ssl」という項目があり、SSLを使用する設定にしたユーザーは「1」、そうでないユーザーは「0」になっています。

この機能を実現するuse_ssl_preferenceという関数はwp-admin/user-edit.phpの69〜76行目にあります。「personal_optionsというアクションにフックすると使えるようになります」とコメントが書かれていますね。version 2.7から実装されていたようです。あと、WordPress.comでは元々このオプションは有効になっているようですね?

さて、久しぶりのブログ更新でした。前回の記事がWordBeach(WordBench名古屋)の記事なので、何とあの驚異的な盛り上がりを見せた「WordCamp Tokyo 2011」すらスルーしてしまったようです。。。また地味なネタを見つけたら書きますね。

【追記】

そうそう、最近「FE.labs」というブログを気付いた時に更新しています。私だけでなくて、当社の若手プログラマ等も書いています。今後はこのブログも私だけでなくて当社スタッフにも書いてもらい、Web関連の技術ブログはこの「WPCMS.jp」「FE.labs」の2本でやっていこうと考えています。お暇な時にでもどうぞ。

auth_redirect() を使ってみた。

2009-3-4

以前、紹介させていただいたauth_redirectというWordPressの関数ですが、先程使う用途があって使ってみたところ、最初ちょっとつまずいたのでメモ。

結論から書くと、auth_redirectを使う時は下記のように書きます。

<?php if (!is_user_logged_in()) { auth_redirect(); } ?>

どうやらこれはバグの様子?本家のサポートフォーラムで見つけました。コードはまだ見てませんが。

最初、単純にテンプレートにauth_redirect(); とだけ書き込んだところ、ログインしても再度ログインを促されるという状態に。
それでググって上記の方法で解決。

auth_redirectという関数は、WordPressで会員制サイトをつくる時に便利です。テンプレートにこの関数の記述があると、ログイン状態を見て、もしログインしていない場合は、ログイン画面に誘導され、ログイン後にリクエストページへ自動的にリダイレクトされます。この機能によって、会員制サイトの構築が容易になります。

今回、工務店のウェブサイト制作において、施主専用ページをつくるのに使いました。お施主様にID/PASSを発行して、工事の進捗状況を見てもらえるようにするためのページ。他にもアイディア次第でいろいろできると思います。

ちなみにこれはMovableType でも可能ですが、262,500円のプラグインが必要な様子。まぁ商用なら普通そうなりますよね。むしろWordPressが無償で使えるのがスゴイことで…しっかり寄付なり何なりしないとバチ当たるかも><

※WordPress本体、テーマ、プラグイン全般に言えることですが、”実質的に”無料で使えてしまう代わりに誰も保証はしてくれない…トラブルが起きても自力で何とかしなければならないので、ビジネスユーザーは常に”もしもトラブルが起こった”時のことも考えていないといけないですね。WPが無料で使えるからって制作費もバカ安で提供してるとどこかで自分の首締めることになると思いますのでご注意ください。単純にMTは金が掛かる&WPは”無料”と考えるとしたら、それは間違いです。

WordPress 2.7 テーマ/テンプレートの新機能まとめ。

2009-1-12

今年最初の記事だったようです。。。
あけましておめでとうございます。今年もよろしくお願いいたします。

WordPress 2.7がリリースされて1ヶ月近く経ちますが、過去バージョンにて実装されて知らない機能や関数がたくさんあったので、ここで今のうちに2.7の新機能を確認しておこうと思い、主にテーマ(テンプレート)に関連したものの概要を調べてみた。

  1. wp_logout_url()
    ログアウト用のURLを表示するテンプレートタグ      

    <?php echo wp_logout_url($redirect); ?>

    従来、/wp-login.php?action=logout などとしていた部分はこのタグに置き換えることでセキュリティ的に望ましいURLが挿入されるらしい。
    引数($redirect)には、ログアウト後に移動するページのURLを指定できる。
    ちなみに、wp_config.php内に define(‘NONCE_KEY’) という項目が加わっている。このタグにも関連していると思われる。
    これらのセキュア・キーに指定した値がパスワードに付加されることで解読されにくくするもの。

  2. wp_list_comments()
    コメント&トラックバック&ピンバック表示のためのテンプレートタグ。
    それぞれ分けてリスト表示できるようになった。      

    <?php wp_list_comments(‘type=comment‘); ?>

    とするとコメントだけが表示される。他に trackbackpingbackを指定できる。

    <?php wp_list_comments(‘type=comment&callback=mytheme_comment‘); ?>

    上記のようにコールバック関数も使える(関数はfunctions.phpなどに記述する)。
    また、下記の5つのテンプレートタグは、コメント表示部がスレッド化、ページ分割、ネスティングができるようになった(テーマの対応が必要)ため、関連して新規追加されたテンプレートタグ。よりpostのループに近い感じになった。
    続きを読む »

antispambot()、get_permalink()をショートコードで。

2008-12-25

メールアドレスをスパムボットに収集されにくくするためのantispambot()関数を、投稿orページ内で使用するにあたり、従来はrunPHPExecPHPを使用してきたけれど、それを「ショートコード」に置き換え。

以下の関数をwp-content/themes/使用中のテーマ/funcitions.php 内に挿入。
【追記】もし下記を追加後にビジュアルエディタが使えなくなったとしたら、functions.phpを編集した時にUTF-8以外の文字コードで編集した可能性があります。その場合は、UTF-8に適用しなおして、挿入したコードの前後の改行などもいったん削除すると直ります。 

<?php
function antispambot_short($atts) {
        extract(shortcode_atts(array(
                ’mail’ => ”,
                ’text’ => ‘クリックしてメーラーを起動’,                
        ), $atts));
        $mail = antispambot($mail);
return ’<a href=”mailto:’ .$mail . ‘”>’ .$text .’</a>’;
}
add_shortcode(‘antispambot’, ‘antispambot_short’);
?> 

あとは、投稿orページの本文で挿入したい部分に

[antispambot mail="xxx@example.com" text="お問い合わせはこちら"]

のように記述すればOK。 

企業サイトをWordPressで制作する場合、会社概要などにメールアドレスを記述することがあると思う。その時に、スパムボット対策でantispambot()でメールアドレスをHTMLエンティティ化するには、投稿orページ本文の中なので、上記プラグインを使用して本文内でPHPを実行すれば実現できる。が、これらのPHP実行プラグインはビジュアルエディタとバッティングするので、もしクライアントサイドでビジュアルエディタで編集するとPHPのコードが壊れて機能しなくなってしまう。

これをショートコード化すれば、(クライアントがその部分の記述を触らない限り)antispambotは使えるようになります。

メリークリスマス☆

【追記】

今更ながらにショートコードって便利><っと、調子にのって、サイト内リンクを簡単にするために、get_permalink(記事ID)を使えるようにしてみました。

<?php
        function get_permalink_short($atts) {
                extract(shortcode_atts(array( //ショートコード内に指定された属性を取り出す
                        ’id’ => ”, //未指定の場合の初期値
                        ’text’ => ”, //同上
                        ’title’ => ”, //同上
                        ’target’ => ”, //同上
                ),$atts));
                $link = get_permalink($id); //指定された記事IDから、get_permalink()によってリンクURLを取得
                if($text == ”)
                        $text = $link; //リンクテキストが指定されない場合はURLを出力
                if($title !=”)
                        $title = ‘ title=”‘ .$title .’”‘; //title属性が指定されている場合は書式をつくる
                if($target !=”)
                        $target = ‘ target=”‘ .$target .’”‘; //target属性が指定されている場合は書式をつくる
                return ‘<a href=”‘ . $link . ‘”‘ . $title . $target . ‘>’ . $text .’</a>’; //リンク書式全体を結合して返す      

        }

        add_shortcode(‘link’,'get_permalink_short’); //linkというショートコードが指定されたら上記のget_permalink_short関数を実行する
 

?>

投稿ページでは

[link id="1"]

と書くだけで、サイト内の記事ID=1の記事へのリンクを挿入できます。
http://example.com/archives/1/

[link id="1" text="こちらをご覧ください" title="ショートコードのレシピ♪" target="_blank"]

と書くと 
こちらをご覧ください
とすることもできます。  

パーマリンク構造やスラッグを変えてもリンクエラーになりません。でもビジュアルエディタ使ってる時は別ウィンドウからリンクテキストをドラッグ&ドロップするだけでリンク貼れるので、手間を省く意味はあまりないかもですw

こんな具合で慣れてしまえば仕組みは一緒なので、投稿ページ内で使いたい関数があったらぜひ自作ショートコード作成にチャレンジしてみては?プラグインづくりのトレーニングにもなるかも。 

参考ページ)
ショートコードAPI  WordPress Codex 日本語

登録ユーザーのみに閲覧制限。

2008-12-17

登録ユーザーのみ閲覧可能にする方法は? WordPress Forum

auth_redirect()という関数があるんですね↓
http://codex.wordpress.org/Function_Reference/auth_redirect

ページ内にこの関数が設置されている場合、もしログインしてないとログイン画面にリダイレクトされるようです。そしてログイン後、そのページに自動的にリダイレクトされます。社内用やプライベートなサイト、会員制サイトなどに使えるでしょう。

あるいは、ページ内の部分的な制御なら以下の方法もあります。

<?php if ( $user_ID ) : ?>
—登録ユーザーかつログイン中のみ閲覧できるコンテンツ— 
<?php endif; ?>

テーマフォルダ内にあるcomments.phpに使われている上の書き方を借りれば、ページ内のある特定の部分の閲覧制御もできますね。

【追記】
上の書き方だとちょっと不安になり、以前使った事があるコードを確認しました。でもこの時のWPは2.0.10です。参考になれば。

<?php global $current_user, $user_ID;
if (($current_user->id != 0) && ($user_ID != 0)) { ?>

—登録ユーザーかつログイン中のみ閲覧できるコンテンツ— 

<?php } else { ?>

—閲覧にはログインが必要である旨のメッセージ—

<?php } ?>

記事をランダムに呼び出す。

2008-10-10

実はquery_posts()にorderby=randという引数を与えるとランダムに記事を取得できることを忘れて(いや、知らずに;)、無駄なことをしてしまいました。ver2.5からはrandという値が使えるようになったんですね。

そのまま消すのももったいないので、いつかの何かのヒントのためにメモ。

まずはquery_posts()でランダムに記事を取得する方法。
(条件:カテゴリID=3に属する記事を5件、ランダムに取得)

<?php query_posts(“cat=3&showposts=5&orderby=rand”); ?>
—- 通常のループ —-

シンプルですねぇ。

■記事を1つだけ呼び出す場合
続きを読む »

2.6.xでカスタムフィールドが複製されるバグ。

2008-9-7

カスタムフィールドを使用するプラグインは、場合によってキー&値のセットが複製されることがあるようです。

WordPress 2.6.x “Duplicate Custom Field” Issue alexking.org (2008/9/6)

2.6から備わった「Post Revisions」機能による影響のようですが、使用するプラグインが、記事を保存する時に実行されるsave_postというフックが持つ2つのパラメータの内、$postではなく$post_idを使っている場合に複製される問題が起きるようです。

記事のリビジョンは、リビジョン自体がオリジナルの記事とは別の$post_idを持っています。そしてそのリビジョンを保存する時に、オリジナルの記事を保存する時と同じsave_postというフックが実行されるため、$post_idというパラメーターを参照した時に「リビジョンの」$post_idを読み、結果「カスタムフィールドが未登録」と判断されて、追加されてしまうようです。

保存後その記事の編集画面を開くと、オリジナル記事に保存されたカスタムフィールドと各リビジョンに保存されたカスタムフィールドが同時に表示され、ダブって表示された状態になります。

続きを読む »

本:WordPress2.5でつくる!最強のブログサイト

2008-7-31

先週、予約してあったWordPress本が届いて、今週からようやくじっくり読み始めましたが、なかなか読み応えありますよ。

『WordPress2.5でつくる!最強のブログサイト』田中広将・志村俊朗 共著/ソーテック社

まず、内容が幅広い上に、初心者にもわかりやすい解説。
(順不同)

・ドメイン取得からDNSの設定
・インストール、画面構成の解説
・テーマとプラグインの基本
・テキストエディタの選び方、文字コードの問題
・CSSの書き方
・メール投稿で文字化けする原因
・携帯からの投稿
・PHPの基本
 ~関数のしくみ
 ~ループの動作解説(for、if~else)
 ~変数、配列の解説
・XAMPPを使ったローカルPCにWPを構築する方法
・phpMyAdminでのバックアップ
・WordPressを取り巻く環境、動作原理

など、これ1冊あればインストールからPHPでの拡張までWordPressに関することがひととおり理解できるのではないでしょうか。要所要所で有益なプラグインも紹介されています。

中級者以上には、プラグインの作成方法の解説もあります。

・フィルター、アクション、ショートコードの原理、開発のコツのようなetc.

他に

・poEditでのプラグインの翻訳
・PHPエラーのトラブルシューティング

なども。こういったことが、初心者にもわかるように丁寧な文章で解説されている印象です。中級者以上にも有益だと思います。WordPress 2.6がすでに出ていますが、基本的な構造は同じですので十分に役立つと思います。

今週末は自力でのプラグイン作成に挑戦してみようか?!とモチベーションが高まっているところです。

WordPress for iPhone リリース。

2008-7-23

iPhone / iPod touch向けのApp(アプリケーション)がリリースされました。iTunes App Storeで無料でダウンロードできます。

■対象:
WordPress.com(ブログサービス)
または
WP 2.5.1以上

WordPress for iPhone』 WordPress Publisher Blog(2008/7/22)

■スナップショット:
App01.jpg App02.jpg App03.jpg App04.jpg App05.jpg App06.jpg App07.jpg

続きを読む »

WordPress.orgの新しいテーマ/テンプレート配布場所

2008-7-20

WordPress.org内にあらたにテーマ/テンプレートの配布場所ができたようです。
Theme Directory


以前からあるテーマ/テンプレートのダウンロードサイト↓
Theme Viewer

WordPress 2.6 リリース。

2008-7-15

WordPress 2.6(英語) がリリースされました。
今、インストール中です(beta、RCは結局触れませんでした)。

WordPress 2.6 WordPress Blog (2008/7/15)

http://wordpress.org/development/2008/07/wordpress-26-tyner/


#ムービーの中に「どーもくん」がっっ!実は大ファンだったりする。
#関係ありませんが、コピー&ペーストができないiPhone、「Press This!」の仕組みを応用できない?

参考情報)

WordPress 2.6 beta

2008-6-25

早くも(?)WordPress2.6の機能が明らかになってきました。リリースは7月中旬の予定とのこと。すぐですね。すでにbeta 1のダウンロードができます。


WordPress 2.6 Beta 1」boren.nu (2008/6/23)

http://boren.nu/archives/2008/06/23/wordpress-26-beta-1/

WordPressの主要開発者の一人、Ryan Boren氏の上記ブログ記事によれば、WP2.6は、2.5程の大きなリリースではないがいくつかの新機能があるようです。

  • バージョニングシステム(Post Revisioning)
    ~記事ごとに複数のバージョンを持ち、複数のバージョン並べて違いをカラー分けして比べることができる。誤って重要なセンテンスを削除してしまった場合でも、過去バージョンに戻せる、など。(最近そういう相談をいただいたので何ともグッドタイミングな…)
  • Tumblrライクなクイックポスト機能
    ~「Press This」というブックマークをクリックして即座に投稿へ
  • adminページの静的ファイルを「Gears(Google Gears)」を利用してローカルにキャッシング
    ~管理画面のローディングをより速く
  • 新しい、そして改善された画像編集ダイアログ
    ~記事中の画像について豊富な調整機能を提供
  • 「テーマ」のプレビュー機能
    ~「WordPress.com」で見られる機能
  • 文字数カウント
    ~記事編集画面に内蔵
  • リモート投稿機能を不可能にすることができる
    ~セキュリティ上の観点で
  • XML-RPC APIを変更可能
  • admin画面のSSL化についてより良好なサポート
  • admin>管理>ページ および カテゴリで階層を意識したページ分け
  • コンテンツの保存場所を別の場所に移すことができる
  • wp-config.phpファイルをウェブサイトのルートの外へ移動できる
    ~一般ユーザーからはアクセスできない場所へ
  • ドラッグ&ドロップで並べ替えできる「ギャラリー」機能
  • 標準のアバターをカスタマイズできる
  • プラグインの一括消去、有効化、無効化
  • チェックボックスを、Shiftキーをホールドしながらクリックによる範囲選択
  • TinyMCE 3.1.0.1(WYSIWYGエディタ)およびたくさんのバグフィクス
  • jQuery 1.2.6 およびいくつかのパフォーマンスの改善
  • jQuery UI 1.5
  • たくさんのバグフィクスと機能改善

ということです。派手な機能の追加ではなく、堅実な内容で好感が持てますね。より一層「役に立つ道具」としての完成度を高めてくれそうです。

Google Chart APIで動的にグラフ生成

2008-4-29

WordPress内のデータをGoogle Chart APIで動的にグラフ作成。

ふと急にGoogle Chart APIを使ってみたくなり、WordPress内のデータを使って動的にGoogle Chart APIでグラフを出力するテストをしてみた。

とりあえず、カテゴリごとの記事の割合をグラフにしてみる…こういう目的ならタグクラウドで十分な気もするけど、将来的に応用できそうなので、メモということで。

※先に言ってしまうと、Google Chart APIはまだ日本語対応が十分でなく、ひらがなとカタカナしか表示できません…しかもフォントも微妙。カテゴリースラッグにアルファベット入れてあれば下のコード内のnameの代わりにslagに差し替えて即使えます。

続きを読む »

bbPress 0.9 リリース

2008-4-3

WordPressから派生したフォーラムソフトウェア『bbPress』のver 0.9がリリースされました。

WordPress 2.5に合わせた互換性の改善がメインのようですが、新しいインストーラ、”新しいトピック”などRSSフィードの追加など新機能も追加されているようです。

bbPressは、WordPressのフォーラムにも使われているオープンソースのソフトウェアで、WordPressとの連携ができます。例えばユーザー情報の共有、ログイン状態の共有など。つまりWordPress側でログインしていると、bbPressでもログイン状態となります。Akismetによるスパム対策、プラグインによる機能追加もできます。

続きを読む »

ウィジェット領域を2つ以上つくる

2008-3-30

WordPressウィジェット領域は、標準ではsidebar.php内の1カ所だけだが、index.phpやfooter.phpなど、その他のエリアにもウィジェット領域を持たせる。

■手順1:
テーマフォルダ/functions.php 3行目

register_sidebar(array(

これを

register_sidebars(3,array(

※数字は、ウィジェット領域の数

続きを読む »

WordPress 2.5

2008-3-18

WordPressの最新版、2.5の正式リリースが近々行なわれます。
ほんとは3/10の予定だったのが1週間延びて3/17の予定…

そしてついに開発サイドのブログが更新され、正式版ではないもののRC1(リリース候補)がダウンロードできるようになりました。

すでに基本的には開発完了、安定しているとのことですが、ここでさらにより広くフィードバックを得てから、正式版を一般公開したい、とのことです。

■管理画面がとにかくガラリとかわります

続きを読む »

記事ごとに違うサイドバーを読込む。

2008-3-6

※アクセスログの検索キーワードを参考に記事

WordPressサイトで、特定の記事ごとorカテゴリごとに違うサイドバーを読込む。

例)
会社概要のページ…記事IDが「1」とする
製品案内のページ…記事IDが「2」とする
 → sidebar-page.php
スタッフブログ(カテゴリ)…カテゴリIDが「3」とする
 → sidebar-blog.php
その他
 → sidebar.php

以上のように記事やカテゴリ毎に別のサイドバーを表示させるには?

続きを読む »

検索結果の件数を表示

2008-3-5

※アクセスログの検索キーワードをヒントに記事

WordPressの記事一覧(検索結果、カテゴリ一覧、トップページ等)にて、記事の件数を表示する。

■書式:
$wp_query->found_posts

■記述例:

<?php if (have_posts()) : ?>
<p>「<?php echo wp_specialchars($s, 1); ?>」の検索結果 <?php echo $wp_query->found_posts; ?> 件</p>
<?php while (have_posts()) : the_post(); ?>
—ループ—
<?php endwhile; ?>

■結果:
found_posts.png

【追記】
wordpress 2.0系での記事件数表示

続きを読む »

スパムボットに収集されないようにメールアドレスを公開

2008-2-24

WordPress関数antispambot()を使うと、メールアドレス収集ロボット(スパムメール目的)から保護しながら、メールアドレスをWebサイト上に記載できる。

しかし今、ver2.2のWPサイト上で試してみたところ、どうにも文字化けしてしまう。ver2.0.xではずっと問題なく使っていたんだけど…? 日本語を通す必要性はありませんね(笑) とりあえず「テスト」という文字列を放り込んだので。どうも別のことと勘違いしていたらしい。スミマセン。

antispambot()関数の使い方は以下の通り。

■書式:

<?php echo antispambot(“mailto:aaa@bbb.ccc”); ?>
または
<?php echo antispambot(get_the_author_email()); ?>
※投稿者のメールアドレスを表示
※the_author_emailだとantispambot()が機能する前に表示されてしまうので「get_」を使う

続きを読む »

自分(Author)のコメントだけ背景色を変える。

2008-1-31

WordPressコメント欄についてのカスタマイズ。

■目的:
WordPressブログのコメント欄にて、ブログオーナー(記事のAuthor)が書いたコメントだけ、背景色(その他CSS)を変えて、他のコメンターと区別できるようにする。

■現状:
そのコメントが記事投稿者のものかどうか確認するには、そのコメント投稿者名と記事の投稿者名を照らし合わせる必要がある。

続きを読む »

CATEGORY

ARCHIVE

2017年11月
« 12月    
 1234
567891011
12131415161718
19202122232425
2627282930