2011年03月06日

WordPressでiframeを表示する ContentExプラグイン

 WordPressでiframeを含む投稿をポストしようとすると、一度でもヴィジュアルリッチエディタに切り替えた時点で、iframeが削除されてしまいます。
 この対策として、themeのfunctions.phpを書き換える方法がありますが、試したところ何故か上手くいきませんでした。
 簡単な方法として、ContentExというプラグインがあり、試したところ上手くいきました。
 要するに削除されてしまう部分をカスタムフィールドに退避させる、ということです。

@ContentExをインストール、有効化
Athemeテンプレートのthe_contentをthe_content_exに書き換える(大抵はindex.phpとpage.phpでしょう)
B投稿時、新規カスタムフィールドを追加し、「キー:好きな名前、値:iframeなど挿入したいhtmlソース」という形で入力
Cその内容を表示したい部分に「{{insert_meta カスタムフィールド名}}」と記入

 以上です。
posted by ふみこ at 00:55| WordPress

2011年02月27日

Faster Image Insertでエントリに挿入される順序を変える

 WordPress › Faster Image Insertは、WordPressで画像をまとめてアップロード、まとめて挿入できるようにしてくれる便利なプラグインですが、挿入する時に入る順序がアップロード順ではない、大抵はアップロードと逆順のような、とにかく思い通りの順序に入らないのが不満でした。
 Faster Image Insertの画像挿入順序を変更するには、faster-image-insert.phpの282行目辺りを見ればOKです。
 とりあえずID順(多分アップロード順になっている)にしてみたかったので、foreachに入る前で

//modify the insertion string
if ( !empty($_POST['attachments']) ) {
$result = '';
ksort($_POST['attachments']); //この行を追加
foreach ( $_POST['attachments'] as $attachment_id => $attachment ) {

とソートしてやったら、大体期待した通りになりました。
 もっと細かく制御したければ、usortなり何なりでforeachに入る前に順序を整えてやれば良いかと思います。
 あまり細く見ていませんが、とりあえず多少楽になる程度に改造できれば満足だったので勘弁して下さい。
posted by ふみこ at 21:18| WordPress

2011年02月21日

SEO Friendly Imagesでslugではなくカテゴリ名を入れたい、ファイル名が表示されない

 WordPressのプラグインSEO Friendly Imagesは、画像のaltタグやtitleタグに自動的にページタイトルやタグなどの文字列をセットし、画像SEO効果をあげてくれるものです。
 しかしSEO Friendly Imagesにはaltやtitleにカテゴリースラッグを入れる、という設定はできても、カテゴリー名そのものを入れる、という設定がありません。
 SEO Friendly Imagesでカテゴリー名を入れたい時は、seo-friendly-images.phpの210行目辺りで

//$titletext_rep=str_replace("%category", $cats[0]->slug, $titletext_rep);
$titletext_rep=str_replace("%category", $cats[0]->cat_name, $titletext_rep);

 その下の240行目辺りで

//$alttext_rep=str_replace("%category", $cats[0]->slug, $alttext_rep);
$alttext_rep=str_replace("%category", $cats[0]->cat_name, $alttext_rep);

 としてやれば良いでしょう。

 ちなみにこれを設定してみて、%nameで指定するファイル名(拡張子なし)がうまく入っていないことに気づきました。バージョン問題か他のプラグインとの相性かもしれませんが(Faster Image Insertという、画像をまとめて挿入するプラグインを併用しているため、それが原因の可能性もある)、とりあえず、180行目辺りの

### Swap with file's base name.
preg_match('%[^/]+(?=\.[a-z]{3}\z)%', $source[2], $source);

 で正規表現が失敗しています。
 ファイル名を取り出すだけなら、この行の前で、

### Get source.
preg_match('/src\s*=\s*([\'"])?((?(1).+?|[^\s>]+))(?(1)\1)/', $matches[0], $source);
$saved=$source[2];

$imageFileName=basename($source[2]); //追加したコード
$imageName = substr($imageFileName, 0, strrpos($imageFileName, '.')); //追加したコード

 とでもしてやり、先ほど書き換えた箇所でそれぞれ
//$titletext_rep=str_replace("%name", $source[0], $titletext_rep);
$titletext_rep=str_replace("%name", $imageName, $titletext_rep);

//$alttext_rep=str_replace("%name", $source[0], $alttext_rep);
$alttext_rep=str_replace("%name", $imageName, $alttext_rep);

 とすれば、とりあえずファイル名はセットされます。
posted by ふみこ at 20:01| WordPress
↓応援クリックお願いします☆
ブログランキング・にほんブログ村へ