the_meta() で出力した内容を JavaScript で二次利用する方法

WordPress のカスタムフィールドの値を JavaScript で使いたい件があって、こんな方法にたどり着きました。

事前に <?php the_meta(); ?> を実行してあることを前提とした手抜き技です(笑)

jQuery(document).ready(function($){
  pm = $('ul.post-meta .post-meta-key').parent();
  list = {};
  $(pm).each(function(){
    t = $(this).text().split(": ");
    list[t[0]] = t[1];
  });
});

これだけでは何にもなりませんが、いろいろと応用できると思います。

活用方法は、ご自由に。

 

でわまた。

 

each(function(){

xrea から coreserver に移転しました

あまりブログ書いていないこともあってアクセス数は極めて少ない当サイトですが :cry: 、にも関わらず辟易するほどの遅さだった xrea 。

このホスティングの期限が近づいたので、先日のもくもく部で Coreserver に移転してみました。
黙々部のハズがかなり賑やかな会になったおかげ(?)もあってかなり時間がかかってしまいましたが (^^;

サクっと結論から言うと、圧倒的に早くなりました! ヽ(^o^)丿

ab の実行結果は以下のとおりです

<リクエスト内容>
Concurrency Level:      10
Complete requests:      100
Total transferred:      4257600 bytes
HTML transferred:       4219600 bytes

Time taken for tests Requests per second Transfer rate
移転前
(xrea)
32.742[sec] 3.05[#/sec] 130.03[Kbytes/sec]
移転後
(coreserver)
24.916[sec] 4.01[#/sec] 167.03[Kbytes/sec]

あれ?数値上は3割程度しか早くなってないように見えますね。
体感的には2~3倍は早くなってる気がしますが…

ま、当面はこのサーバーで問題なさそうです。

せっかくサーバーも早くなったことだし、頑張って更新していかなきゃ!

でわまた

WHM/cPanel で Package の名前を変更したい

WHM でホスティングアカウント作成するにあたって予め各設定をパッケージとして作成しておくことが出来ますが、この名前が管理パネルから変更できません。

どうしたもんかと探したら、以下のような情報が出てきました。

http://www.webhostingtalk.com/archive/index.php/t-17545.html

要するに、フォルダ /var/cpanel/packages 内に置いてあるファイル名がそのまま表示されているだけだから、その名前を mv で変更すればよい、ということ。

やってみたらうまくいきました。

大文字小文字等もそのまま表示されます。
つまりUnixのファイル名として使える文字なら何でも使える(逆に言えば日本語等は当然避けた方がよい)、ということですね。

結論:パッケージの名前変更したい場合は、SSHでログインして該当ファイル名変更する

でわまた

WordPressのインストールPathを変更した場合の、レコード内容置換コマンド

マルチサイト構築等のために、今まで /wordpress/ 等サブフォルダにインストールしていたものをルートに置き換えた場合、全コンテンツ内に埋め込まれているURLを全部変更しなくてはいけません。

投稿件数が少なければ1つひとつ記事編集してもいいですが、数十になってきたらもう大変なので、一括で置換してしまった方が楽です。
というわけで、一括置換の SQL をご案内します。

なお、undo出来ませんので、くれぐれもバックアップしてから(元に戻せる状態にしてから)実行して下さい。
なんかあっても責任持てませんので。

wp_options 用

UPDATE `wp_options`
SET `option_value` = REPLACE(`option_value`,'ドメイン名/wordpress','ドメイン名');

wp_posts用

UPDATE `wp_posts`
SET `post_content` = REPLACE(`post_content`, 'ドメイン名/wordpress', 'ドメイン名'),
`guid` = REPLACE(`guid`, 'ドメイン名/wordpress', 'ドメイン名');

より確実にするには、where 文なども入れた方がいいかもしれません。

繰り返しますが、くれぐれもバックアップを!

 

でわまた。

Events Calendar での文字化け対処

某サイトで Events Calendar を入れているサイトがあるのですが、1点だけ問題が。

登録済みのイベントを変更しようとすると文字化けするのです。

ようやく調べる時間が出来たので確認したところ、ec_management.class.php 内の htmlentities のところで文字化けしていました。

どうやらここでエンコードを勘違いして文字化けしている模様。

下記のように「mb_internal_encoding()」を挿入してあげたら解決しました。

450: <td><input class=”ec-edit-form-text” type=”text” name=”EC_title” id=”EC_title” value=”<?php echo htmlentities(stripslashes($event->eventTitle),ENT_QUOTES ,mb_internal_encoding());?>” /></td>

454: <td><input class=”ec-edit-form-text” type=”text” name=”EC_location” id=”EC_location” value=”<?php echo htmlentities(stripslashes($event->eventLocation),ENT_QUOTES ,mb_internal_encoding());?>” /></td>

作者に教えてあげたいけど、何て言えば伝わるんだろう?

海外のサイトだと mb_string インストールされてないサイトもありそうだし。

ひとまず該当サイトでプラグイン直接編集で解決しています。

 

でわまた。

wordpress media flickr を入れてみた

先日の WordCamp Fukuoka 2011 にて、カイ士伝さんのライトニングトークで具体的に知った  WordPress Media Flickr をようやく入れてみました。

あまりブログを書いてなかったのですが、写真だけは見てもらいたいと思って Flickr をずっとやってたので、このプラグインを使えば簡単に使い回し出来るなー、と。

このサイトは WordPress 3.1 で、プラグインは正式には対応していません(Compatible up to: 2.9.2 と書いてある)が、このサイトでは正常に動作したので、インストール方法を紹介しておきます。

まずは、インストールとセットアップ手順から。

Flickr は日本語化されてないのでちょっとハードル高い人も多いと思うのですが、ほとんど一本道なので結構簡単です。

  1. プラグインのインストールと起動
    これは、自動ダウンロード等から普通にインストールして起動してください。
  2. Media Flickrの設定
    まずは、「設定」内にある「Media Flickr」をクリックして、以下の画面を開く。

    設定画面

  3. Flickr認証を開始

    認証開始

  4. Flickrのページが開くので、右側の「Next」をクリック

    認証方法の選択

    そして、承認。

    承認をクリック

    Flickr での認証完了

  5. 認証完了したら、WordPressの画面に戻って完了する。

    認証を完了をクリック

    認証完了

    Flickrユーザー名とFlickrユーザーIDが表示されればOK。

 

基本設定作業はこれで以上です。

では、投稿してみましょう。

Media Flickr のリンクボタンをクリック

挿入したいFlickrの写真をクリック

大きさと挿入位置の選択して「挿入」

ほら出来た

 

最後のほうの説明がザックリになりましたが(^^;)

思った以上に簡単だったので、是非オススメします!

 

この記事で使った写真は全部キャプチャして、画像保存して、アップロードってやったんですが、一回このプラグインを使ってしまうととんでもなく面倒くさいですね・・・

カイさんがこれを使えば超高速にフォトブログ投稿できると言ってた理由を実感しました。

 

でも、Flickr はあまり雑多にしたくないんだよなぁ

うーん・・・

しばらく使ってくうちに何か閃くでしょう。

でわまた (^^)/

2011年 スーパームーン

2011年3月19日夜、帰り途中に普段は見かけない風景が。

多くの人が月にカメラ(ケータイ含)を向けてる。

たしかにキレイだけど薄曇りでおぼろ月、なんでそんなに一生懸命撮ってるんだろう?と思ってたら、地球と月が再接近する日だったとTwitter等で知りました。

それならば、と帰宅してから撮影してみました。

 

日付が変わって 3月20日のAM1時。

幸い雲もスッキリ無くなってくれて、電力不足の影響か普段より暗い夜空。

ベストな撮影環境。

後で読んだ記事によると1時から4時が最大になる時間だったらしく、タイミングもちょうど良かったみたいです。

 

色々設定を変えながら20枚ほど撮った結果のベストが以下の写真です。

 

 

Super moon

カメラ: Nikon D90
レンズ: AF-S 18-200mm 1:3.5-5.6G ED
焦点距離: 200mm
ISO: 200
絞り値: F/11
シャッター速度: 1/500秒
ホワイトバランス: オート

今までも何回か月の撮影しましたが、自己ベストです! \(^○^)/

 

せっかく色々な設定で撮ったので、自分のメモ書きも兼ねて設定毎の写真の違いなんかも記事にしたいと思います。乞うご期待(^^)

でわまた

php 5.3 にバージョンアップしたら strip_tags で構文エラー発生

サーバーの php を 5.3 系にバージョンアップしたらエラーが出るようになってしまった。

■エラーメッセージ

Warning: strip_tags() expects parameter 1 to be string, array given in /home/…/public_html/wp-includes/formatting.php on line 2774

■このエラーが出た環境と状況

  • システム構成
    • Apache 2.2.17
    • php 5.3.5
    • WordPress 3.0.5 マルチサイト構成
  • バージョンアップ前に投稿済みの記事を編集し、「更新」を押した後に上記エラー発生
  • 記事自体は更新されている
  • シングル構成サイトでは問題確認できず
  • 新規投稿では再現せず

デバッグしようにも手掛かりがほとんどないので、ひとまず 5.2 系にダウングレードしたら解決。

いったい何なんだろう…

WordPress 3.1 にアップグレードすれば解決してるのかな?

 

追加の情報が出たらまたご報告いたします。

でわまた

Warning: strip_tags() expects parameter 1 to be string, array given in /home/daieishj/public_html/wp-includes/formatting.php on line 2774

Hello Dolly のBGMでライトニングトーク出来ないかな?

WordCampやWordBench等で頻繁に行われるライトニングトーク(大体5分程度)。

いつもタイムキーパーがいてカウントダウンしてるけど、もっと参加者も分かりやすい方法はないのかなーと考えてました。

で、思いついたのが曲を流すこと。

そうだ、最近の曲は大体5分くらいだから丁度いいじゃないか!

WordPressと言えばJazz!そうだ、Hello Dolly の曲を聴いたことがない。

長さが合えば完璧だぞ?

と探してみました。

3分弱・・・

ちょっと少ないか・・・

でも、この案って良いと思いますよね?

なんかで使おうっと。

でわまた

拾ってきた jQuery コードが動かない場合の簡易対処方法

jQuery のサンプルコードってかなり前から多数出回っていて、
「これをコピペすればこうなりますよ」
というレベルで紹介されているものも少なくありません。
でも、実際試そうとしたら、自分のサイトではピクリとも動かない・・・

こんな経験無いでしょうか?
自分がまさにそうで、この部分でドハマりして当初 jQuery は挫折してました。

そういった際の対処方法をご紹介します。

 

あるサイトから「そのまま動く」と明記されているコードを拾ってきます。
例えば、以下のような感じで大抵は書いてあると思います。
(実際の処理は省略してます)

$(document).ready(function(){
    // jQueryの処理
});

これを WordPress のテーマに組み込んでみたら動かない(エラーが出る)、
サンプルHTMLを丸ごとコピーして html ファイルを生成したら問題ない。

自分の場合、ここでチンプンカンプンになりました。
WordPressは標準で jQuery がアドオンされているのに、何故動かない???

 

これは、 WordPress を含む多くの CMS で該当すると思うのですが複数の JavaScript アドオンを導入していることで、jQuery の省略型である ” $(なんたらかんたら) ” という記述方法が有効になっていない場合があるようなのです。

もう一度先ほどのコードを見てみましょう。
最初の文字がダラー($)になっています。

$(document).ready(function(){
    // jQueryの処理
});

純粋に jQuery をアドオンしたサイトなら自動的に「$」を別名として利用できるのですが、CMSの場合、同様に $ を別名とするアドオンを利用していることがある(詳しく知りませんが)ようで、この別名定義をキャンセルか何かしている可能性があります。

なので「$なんて知らん!」とエラーになるわけです。

ではどうすればいいのか?

$を使わないで jQuery を呼び出し、
その命令内で省略形を別名定義すればいい。

分かりにくいですね。
先ほど「別名」と言いましたが、当然別名なので「本名」があります。
その本名は「jQuery」です。
つまり、$ を jQuery に書き換えれば動く のです。
ただ、全部の $ を差し替えるのも面倒なので、別名定義も同時に行います。
改善後のコードが以下の通りです。

jQuery(document).ready(function($){
    // jQueryの処理
});

このように、書き変えればOKです。
function($) が別名定義になってくれています。
さらにもっと手を抜けば、

jQuery(document).ready(function($){ //ここから
$(document).ready(function(){
    // jQueryの処理
});
}); //ここまで

といった感じで、該当の命令をごっそり  jQuery(document).ready(function($){}); で囲ってやればOKです。

原因が $ の別名定義のせいであれば殆どの場合これ動くはずですので、是非お試しください。

でわまた :soldier: