WordPress : pingbackを無効にする

WordPressではHTTPレスポンスヘッダに

X-Pingback: http://www.example.com/xmlrpc.php

のようなピンバックの送信先を示す情報が埋め込まれます。

続きを読む ›

タグ:
カテゴリー: WordPress

WordPress : マルチサイト間でタグクラウドやカテゴリを共通にする

1つのWordPressで複数のブログやサイトを運営する、いわゆるマルチサイト利用の場合に、タグ・クラウドのタグや、投稿した記事のカテゴリーを共通なものにしたい場合のカスタマイズ方法です。

functions.php などに以下を追記します。

add_action('init', 'central_taxonomies');
add_action('switch_blog', 'central_taxonomies');
function central_taxonomies () {
  global $wpdb;
  $wpdb->terms =  $wpdb->base_prefix."terms";
  $wpdb->term_taxonomy =  $wpdb->base_prefix."term_taxonomy";
}

やっていることは、タグやカテゴリを格納するmysqlのテーブルが標準だとマルチサイトの場合にぞれぞれ別のテーブルですが、それらを同じテーブルを見に行くように変更しているだけです。
WordPress のバージョン3.5.1で動作確認しております。

タグ:
カテゴリー: WordPress

エクセルの「ウィンドウ枠固定」のような表をHTMLでつくる

WEBシステムを構築する場合に、ユーザビリティを考慮したユーザーインターフェースを検討する場合の参考情報です。

特に業務系のWEBシステムでは、データを検索して一覧表示する画面を多様することは多いと思ます。

簡単にやるなら、検索結果をHTMLのtableタグでレンダリングして表示すればよいのですが、表の列や行が非常に多い場合はブラウザのスクロールバーでスクロールして見せたとしても、列や行の見出しタイトルもスクロールされてしまって、現在どのデータを見ているか分かりにくい時もあります。

特にエクセルの使い方に慣れている方だと、

「エクセルのように『ウィンドウ枠の固定』みたいにできないの?」

という要望をいただくことも少なくありません。

そこで、表の列、表の行、表の中身(行列)をそれぞれ別のtableタグでレンダリングして、javascriptのscrollイベント処理でエクセルのウィンドウ枠の固定のような動きをHTMLで作成するサンプルです。

続きを読む ›

タグ: ,
カテゴリー: WEB

WordPress – ログインフォーム画面(管理画面)のURLを隠蔽してセキュリティ対策

WordPressで管理画面にアクセスする時のURLは標準で、
http://www.example.com/wp-admin

http://www.example.com/wp-login.php
と決まっています。

これだと、Wordpressで作成されたWEBサイトだとログインフォームの画面のURLが容易に察しがついてしまいますので、悪意のあるプログラムによって総当り的に「ユーザー名」や「パスワード」を試行される、いわゆるブルートフォースアタック(Brute-force attack)をしかけられて、最悪の場合はサイトが改ざんされてしまう恐れもあります。

セキュリティ対策として、次のような数行のPHPコードをWordpressテーマのfunctions.phpなどに追加することで簡単にこうしたリスクを軽減することができます。

続きを読む ›

タグ: ,
カテゴリー: WordPress

Pear::Authで Assigning the return value of new by reference is deprecatedというエラー

Pear::Authで Assigning the return value of new by reference is deprecatedというエラーが出る場合の対応方法。

PHPのバージョンを上げたら「Assigning the return value of new by reference is deprecated」というエラーメッセージが表示されるようになってしまいました。

対処方法としては、php/pear/Auth.php の469行目の

 $obj =& new $storage_class($options);

 $obj = new $storage_class($options);

のように & をとれば解決できます。

エラーメッセージの意味は「new の戻り値を参照渡しで変数に代入することはできません」。

PHPではバージョン5から new 演算子は自動的に参照を返すように仕様が変更になりました。
また、PHP5.2からはnew の結果を参照で編集に代入するとエラーになるようになりました。

タグ: ,
カテゴリー: PHP

画像をアニメーションでスケール表示するjQueryプラグイン

画像をアニメーションしながらスケール表示
ギャラリーや商品紹介のWEBページで、アート作品や商品の画像では実際の大きさが分かりにくいという問題を解消するために、画像をアニメーションしながらスケール表示に切り替えるjQueryプラグイン「jQuery View in Room」を作成しました。

WEB上の画像で実物の大きさをイメージしてもらいたい時に利用してもらえることを想定しています。
続きを読む ›

タグ: ,
カテゴリー: WEB

postgreSQLでひらがな・カタカナのローマ字変換をする関数

postgreSQL(ポスグレ)で、ひらがな・カタカナをローマ字変換する関数が欲しかったので作成しました。

仕様としては、kana_to_roman(‘きょうのカムチャッカのてんきは?’) と入れると、
KYONOKAMUCHAKKANOTENKIHA?
というtextを返してくれるものです。
続きを読む ›

タグ:
カテゴリー: データベース

GoogleアナリティクスでPDFファイルリンクの参照やダウンロードをページビューにカウントする方法

もう何年もGoogleアナリティクスを利用されているクライアントから、
「サイトのPDFコンテンツもGoogleアナリティクスのページビューにカウントして欲しい。。。。」
とのご要望があり、早速対応してみました。

こちらのGoogleアナリティクスのヘルプに記載があるように、仮想ページビューという機能を使うことで実現できます。

GoogleアナリティクスのJavascriptライブラリ内で定義されている_trackPageview()関数を使います。

この関数を  a タグの  onclick イベントハンドラで実行すれは、そのリンクがクリックされたタイミングを仮想のページビューとしてカウントしてくれます。

仮想といえど、アナリティクスのレポート画面では、他のページビューと同様に表示されます(上図参照)。

具体的な_trackPageview の呼び方ですが、こちらの記事が参考になりました。
この記事では非同期トラッキングの実例について解説いただいています。

同期トラッキング、非同期トラッキングの違いについてはこちらの記事が参考になりました。

今回、私の方は
onclick=”pageTracker._trackPageview(‘hogehoge.pdf’);”
のようにonclickイベン・ハンドラ内で直接関数を実行する同期トラッキング方式にしました。
(当然ではありますが、既に当該ページにGoogleアナリティクスのトラッキングコードが埋め込まれていてpageTrackerオブジェクトが生成されている前提です。)
同期トラッキング方式にすることで、クリックのタイミングと同期してページビューがカウントされるため、リアルタイムレポートにも表示してくれます。
「クリック時にオーバヘッドをかけたくない」、「リアルタイムレポートにはカウントされなくてもいい」という場合は非同期トラッキングがお勧めです。

さて、この対応ですが、PDFをリンクしているaタグが大量にある場合は1つ1つ対応するのが大変です。

そこで、ページ内の対象となるAタグを検知して仮想ページビュー処理を行う jquery プラグインを作成しました。
https://github.com/masanoritomizawa/jquery.ga-pdf-tracker

【使い方】

1.Googleアナリティクスのトラッキングコードは埋め込まれている前提です。

2.jQueryプラグインですので、必ずjQueryをロードしてから、プラグインをロードしてください。
例)
<script src=”/js/jquery-1.11.1.min.js” type=”text/javascript” ></script>
<script src=”/js/jquery.ga-pdf-tracker.js” type=”text/javascript” ></script>

3.プラグインを実行します。
例)

<script   type="text/javascript">
$(window).load(function(){
  $("#hogehoge .selector").ga_pdf_tracker({extention : ['pdf']});
});
</script>

「$(“#hogehoge .selector”)」の部分で要素を指定することにより、指定した要素内にあるAタグが検知対象となります。
よく分からない場合やページ全体のAタグを検知対象としたい場合は、
「$(“body”)」でもよいと思います。

「{extention : [‘pdf’]}」の部分は、検知対象のAタグのうち、href属性で参照しているURLの拡張子が 「.pdf」または「.PDF」の場合に仮想ページビューをカウントするように指定する意味を持ちます。大文字と小文字の区別なく拡張子を検知します。
当方ではPDFのリンクでしか確認していませんが、おそらく   .avi や .wmv のhrefリンクでも対応できるはずです。
その場合の記述は、
「{extention : [‘pdf’,’avi’,’wmv’]}」
となります。

タグ: ,
カテゴリー: WEB

Linuxサーバー側でurlのサムネイル画像作成

SNSサイトなどで、登録してもらったユーザー情報のURLからホームページのサムネイル画像をプログラムで作成したい場合の方法です。

以前は、Windows上のPHPプログラムで「new COM(‘InternetExplorer.Application’)」オブジェクトを作成してIEブラウザの表示イメージを直接GDライブラリで保存する方法で一旦Windows上にサムネイル画像を作成し、後でLinuxサーバーに転送するやり方で運用していたのですが、Linuxサーバー上で生成するように変更しました。

続きを読む ›

カテゴリー: PHP, その他

WordPress: バッチプログラムを作成する

WordPressでバッチプログラムを作成したい場合、wp-cronを使ってスケジュールされるプラグインもあるようですが、ここではそうしたものを使わずに、ファイル構成上はWordpressとは独立した場所にシェルファイルとして存在するバッチプログラムの作成例について説明します。

こうすることで、たとえばLinuxの場合、crontabの設定でプログラムの実行スケジュールを制御することが可能ですし、Wordpressのセキュリティ強化のために wp-cron は無効にする場合もあるので、そのような場合でも影響を気にせずにバッチプログラムを配置することが可能です。

続きを読む ›

カテゴリー: WordPress
カテゴリー