投稿からの経過日数を表示するWordPressプラグイン

ブログ記事に投稿してからの経過時間、日数を表示するプラグインを自作しました。
「この記事は投稿から3日が経過しています。」というように表示します。
この「3日」の部分が変化しますが、これはWordPressの関数「human_time_diff」を使っています。 (さらに…)

WordPressプラグイン「Add Noindex」

WordPressには個別投稿ページの他に、カテゴリーページ、タグページ、日付別ページなどのアーカイブページがあります。
例えば「プラグインを自作」という記事を投稿すると、「WordPress」のカテゴリーページ、「プラグイン」のタグページなど、各ページの先頭に同じ記事が載ります。
Googleは、ウェブサイトに同じ内容を何度も表示すると「コピーばかりで低品質」と判定するそうです。
一方で「<meta name='robots' content='noindex'>」をHTMLのヘッダに書いておけばGoogleはクロール対象から除外するので、そもそも「品質」の判定をしません。
そこで、個別登録ページはクロール対象とし、アーカイブページはクロール対象から除外するためのプラグインを書いてみました。 (さらに…)

WordPressプラグインのテンプレート

WordPressのプラグインを作ろうと色々調べています。
ショートコードを使う方法が簡単ですね。
ショートコードを使ってプラグインを作るときのテンプレートを作ってみました。 (さらに…)

プラグインの有効化で出るエラー

WordPressのプラグインを自作して有効化しようとしたところ、次のようなエラーが出ました。 (さらに…)

Google ChartをWordPressで使う

Google Chartには2種類あります。
JavaScriptを使って描画するタイプとPNG画像を描画するタイプです。
便宜的に、前者を「Visualization」、後者を「Image」と呼ぶことにします。

  • Visualization
    • Google Chart Tools
    • JavaScriptで描画する。
    • マウスを載せると該当の箇所が強調されるなどインタラクティブ。
    • データのサイズは無制限。
    • 作成が面倒。
  • Image
    • Google Chart Tools: Image Charts
    • URLを与えるとPNG画像が得られる。
    • 作成が容易。
    • データサイズはURLの長さに依存。
    • Googleは公式サポートを停止。

現在、様々なブログで紹介されているのは、ほとんどの場合、後者の「Image」の方です。
こちらは結果を画像で扱えるので使い勝手がとてもよいのですが、Googleは公式サポートをしないそうです。
ということで、前者の「Visualization」が今後の主流になるでしょう。

Visualizationのサンプル

<html>
<body>
<div id="chart_div" style="width: 400px; height: 200px;"></div>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", {
  packages: ["corechart"]
});
google.setOnLoadCallback(drawChart);
function drawChart() {
  var data = google.visualization.arrayToDataTable([
    ["year", "x", "y"],
    ["2010", 10, 30],
    ["2011", 25, 10],
    ["2012", 20, 25]
  ]);
  var chart = new google.visualization.LineChart(document.getElementById("chart_div"));
  chart.draw(data);
}
</script>
</body>
</html>

WordPressで表示

「Image」ならば画像ファイルなのでWordPressで表示するのは簡単ですが、「Visualization」を表示するのは非常に面倒です。
別にHTMLファイルに記述して、iframeタグを使ってWordPressに表示する方法が考えられます。邪道かもしれませんがこの方法が簡単です。
iframeのサイズはグラフのサイズより20px程度大きくするとよいようです。

  1. 上に示したようにHTMLファイルにグラフを表示。
  2. このHTMLファイルをサーバにアップ。WordPressにアップしてもよい。
  3. WordPressの記事にiframeを使ってファイルを指定。

iframeは次のように使います。

<iframe src="xxxxx.htm" frameborder="0" width="500" height="300">
</iframe>

次の記事はここで紹介した手法を使っています。
You Look Too Cool » 稲葉と宮本の年別安打数グラフ

WordPressをMT形式で出力

以前、「WordPressからMovableTypeへの移行」という記事を書きました。
これはWordPressにプラグインを組み込んでMT形式(MovableTypeのインポート用テキスト)で出力するという方法だったのですが、このプラグインの保存先がリンク切れになってしまいました。
そこで自分でツールを作ってみました。
wp2mt.php
ダウンロードして解凍してください。
PHPが使える環境が必要ですが、WordPressが使えるならば問題ないとおもいます。

  1. WordPressで記事をエクスポート。XMLファイルで出力される。ファイル名を「wp.xml」とする。
  2. wp2mt.phpをPHPが使える環境に保存する。同じフォルダにXMLファイルを保存する。
  3. wp2mt.phpをブラウザで開くとMT形式で表示されるので、コピーしてテキストファイルとして保存。
  4. 保存したファイルを、MovableType(またはMT形式に対応しているブログ)にインポート。

実際に、エクスポートして、はてなダイアリー(MT形式に対応)にインポートしたところ、成功しました。一応、テストしたつもりですが、ご利用になるときは自己責任でお願いします。
また、コメントやトラックバックには対応していません。

WassUpで人気記事を取得するSQL

WordPressにはWassUpという、アクセス状況を調べることのできるプラグインがあります。
WassUpはアクセスのログをMySQLのテーブルに保存しているのでSQLを使えば簡単にアクセス状況を集計をすることができます。

そこで「30日間にアクセスの多かった記事」を取得するSQLを考えてみました。

SELECT post_title, count( urlrequested ) AS ct
FROM wp_wassup
JOIN wp_posts ON replace( urlrequested, "/wp/archives/", "" ) = wp_posts.id
WHERE instr( urlrequested, "archives" ) >0
AND instr( urlrequested, "category" ) =0
AND UNIX_TIMESTAMP( ) - timestamp <30 *24 *60 *60
GROUP BY urlrequested
ORDER BY count( urlrequested ) DESC
LIMIT 0 , 10

URLを「/wp/archives/3815」としている場合の例です。「wp」はWordPressのフォルダです。
ログは「wp_wassup」テーブルに保存されています。
記事は「wp_posts」テーブルに保存されているので、結合して記事のタイトルを取得します。
「30 *24 *60 *60」の「30」が日数です。

次が実行結果です。

post_title ct
ワンピースARカードダスのレアカード 7226
ワンピースARカードダス一覧 第3弾 6166
ワンピースARカードダス一覧 第2弾 4436
ワンピースARカードダス一覧 4196
伝説ポケモンのARマーカー 2243
GoogleカレンダーにCSVファイルから予定をインポートする方法 1936
ワンピースARカードダス、40枚中34枚を発見 1668
「ショットノート」を自作 1633
ポケモン立体図鑑ARマーカーリスト 1310
番号と日付がセットできる自作SHOT NOTE 1241

ワンピースとポケモンばかりだ。

WordPressのタイトルを取得するSQL

WordPressはMySQLで投稿データを管理しています。
そのためSQLを使って直に必要なデータを取り出すことができます。

投稿データのIDとタイトルを取り出す場合のSQLは次の通り。

SELECT id, post_title
FROM wp_posts
WHERE post_status = "publish"
ORDER BY id

WordPressは実際にブログ上に表示されるデータだけでなく下書きも保存されるので、ステータスが「publish」となっているものだけを抽出します。

IDを指定して投稿データを取り出す場合のSQLは次の通り。

SELECT id, post_title
FROM wp_posts
WHERE id
IN ( 3144, 3604, 3195 )
ORDER BY id

CodeColorer使用例

このブログでも使っている、WordPressのプラグインの「CodeColorer」ですが、使用例についてまとめてみました。
他にも設定ができますが、効果が確認できなかったものについては割愛しています。
言語は私がよく使うものを使い、特にJavaScriptを中心に例を挙げています。 (さらに…)

WordPressのアイコンとしてGravatarを使う

WordPressではコメントをする際にアイコンが表示されます。

このアイコンの意味が分からなかったのですが、Gravatarというものを設定すると任意のアイコンが表示されることを知りました。

Gravatar - グローバルに認識されるアバター (Globally Recognized Avatars)

このサイトで自分が使いたい画像を登録するとアイコンとして表示されるようになります。

まずGravatarに登録する必要があります。WordPress.comに登録していれば、そのIDでログインできます。
またアイコンとなる画像を準備しておきます。
あとは指示に従って処理するだけです。
大きい写真でも途中でアイコンにしたい部分を切り抜く処理が出てくるので簡単です。

メールアドレスと画像が結び付けられるようです。
そのためGravatarに対応したWordPressのようなブログでコメントをする際に正しいメールアドレスを記入すれば、その画像が呼び出されて、アイコンとして表示されるというわけです。

新しい記事 | 古い記事

タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報