画像thickbox |
ドキュメントブロックthickbox |
wordPressは、管理画面のコントロールに使用するなどの理由で、たくさんのjavascriptファイルをすでに組み込んでいます。
このような組み込み済みの、javascript css等を閲覧画面からも利用することができます。
組み込み関数を利用するために
wp-includes/functions.wp-scripts.phpに中にBackPress script procedural APIと題された関数群があります。
thickboxを利用するために
wp_enqueue_script('thickbox'); wp_enqueue_style('thickbox');
を、例えば、テーマディレクトリのheader.phpやfunctions.phpに追記します。
これで、スタイルとスクリプトの設定は完了です。
wordPressMU等で、画像へのパスが間違っていることがあります。
その場合には、wp-includes/js/thickbox/thickbox.jsの
/* * Thickbox 3.1 - One Box To Rule Them All. * By Cody Lindley (http://www.codylindley.com) * Copyright (c) 2007 cody lindley * Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php */ var tb_pathToImage = "http://example.com/wp/wp-includes/js/thickbox/loadingAnimation.gif"; var tb_closeImage = "http://example.com/wp/wp-includes/js/thickbox/tb-close.png";
tb_pathToImage,tb_closeImageのパスを変更する必要があります。
以上でthickboxを利用することができます。
]]>現在使用しているテーマの名前は、以下のようにして求められるようです。
$name = get_current_theme();
詳細は、includes/theme.php より、
/** * {@internal Missing Short Description}} * * @since unknown * * @return unknown */ function current_theme_info() { $themes = get_themes(); $current_theme = get_current_theme(); $ct->name = $current_theme; $ct->title = $themes[$current_theme]['Title']; $ct->version = $themes[$current_theme]['Version']; $ct->parent_theme = $themes[$current_theme]['Parent Theme']; $ct->template_dir = $themes[$current_theme]['Template Dir']; $ct->stylesheet_dir = $themes[$current_theme]['Stylesheet Dir']; $ct->template = $themes[$current_theme]['Template']; $ct->stylesheet = $themes[$current_theme]['Stylesheet']; $ct->screenshot = $themes[$current_theme]['Screenshot']; $ct->description = $themes[$current_theme]['Description']; $ct->author = $themes[$current_theme]['Author']; $ct->tags = $themes[$current_theme]['Tags']; return $ct; }
また、以下の関数でも取得できるようです。
<?php $theme_data = get_theme_data(ABSPATH . 'wp-content/themes/default/style.css'); echo $theme_data['Title']; echo $theme_data['Author']; ?>
原因を追いなおして、もう一度やり直しました。
2.8.2(2)にアップデートして動作確認しました。
続 XREA無料サーバにWordPress MUを設置 (完結編のつもり)から 修正点は以下のとおりです。
#wp-admin/.htaccess <files async-upload.php> AddHandler application/x-httpd-phpcgi .php </files> <Files plugin-install.php> AddHandler application/x-httpd-phpcgi .php </Files> <Files update.php> AddHandler application/x-httpd-phpcgi .php </Files> <Files update-core.php> AddHandler application/x-httpd-phpcgi .php </Files> <files upload.php> AddHandler application/x-httpd-phpcgi .php </files> #import <files admin.php> AddHandler application/x-httpd-phpcgi .php </files> LayoutIgnoreURI *
管理画面の、スタイルシートが、Firefoxなどのブラウザで適用されないなどの問題は、
XREA無料サーバが、mod_layoutを使って挿入しようとする広告により、スタイルシートが、text/htmlになるためと考えています。
管理画面を操作すると、カテゴリの追加などでも、赤枠表示が出てエラーになる現象も同様と思います。もっと、きめ打ちする必要があるのかもしれませんが、ログイン後に表示されるものなので、LayoutIgnoreURI * を追加しています。
#wp-content/.htaccess LayoutIgnoreURI *blogs\.php
もともとの、LayoutIgnoreURI blogs.phpは、書き方が悪く動作していない様子でした。
LayoutIgnoreURI *\.gif LayoutIgnoreURI *\.png LayoutIgnoreURI *\.jpg
同様に書き方を改めました。
以上で、ajax css アップロードなどが正常に動作している様子です。
]]>ajaxでのエラーも出ているようなので、近々もう一度調べたいと思います。
画像などのヘッダが、text/html担っている様子です。
画像ファイルは、そのままあるようですが、表示できなくなっている様子
ウィジェットAPIのページを見れば、できそうです。
ウィジェットのページは、以下のようになっています
ウィジェットタイトルと簡単な説明書きを表示するようになっているわけですが、最初に紹介したページには、概要やタイトルをどのように記述すればいいか、見つけることができなかったので、方法をメモしておきます。
コンストラクタを、以下のように変更すると、表示できるようです。 /** constructor */ function hogeWidget() { $widget_ops = array( 'description' => 'ここにウィジェットの説明文') ; parent::WP_Widget(false, 'ウィジェットのタイトル',$widget_ops); }
※クラスファイルは、PHP4のクラスを作らないとだめなようです。PHP5の function __construct() { といった書き方はできませんでした。
]]>シングルユーザワードプレスのアップデートで発生した問題です。
原因:load-styles.phpが、header()を使っているために、CGIとして動かすことができません
対策:wp-admin内のファイルで、CGI動作させる必要のあるファイルを限定。.htaccessを見直し
]]>やってみて動かなかった人、ごめんなさい。
wordPress MU を セーフモードのかかった無料XREAサーバにインストールする場合
大まかな動作は、ほぼ大丈夫でも、細かい部分で、いろいろと不具合が出たりします。
以前のエントリで紹介したphpをCGIとして動作させる方法で
AddHandler application/x-httpd-phpcgi .php
を紹介しています。
これは、モジュール版では、セーフモード環境下でディレクトリの作成ができなくなるなどの制約を、突破するための方法でした。
確かに、アップロードなどができるようになるのですが、その反面、CGIモードで動作させた場合に、利用できなくなるPHP関数も存在し、ルートにある.htaccessに追記しただけでは、CGIモードで動作するファイルが多すぎて、影響を受けるようになります。
具体的な事例としては、このサイトで起きていた 「リロードすると画像が表示されなくなる」という現象などがあります
wordPressは、アップロードした画像を、Userの画像ディレクトリに静的なファイルとして、保存しますが、それをそのまま表示しているわけではありませんでした。
ブログから、画像のURLは、見かけ上その静的なリンクに向けてあります。このため、対応する画像を画像アプリで開くと、正常に表示されます。しかし、画像URIにアクセスすると、画像としてではなく、text/htmlとして文字列として、表示されるといった現象が発生します。
なぜ、そのような現象が発生するのか?
実は、wordPressMU特有の、処理が行われていることに起因します。
rootにある.htaccess のmod_rewriteが、その画像をwp-content/blogs.phpで、静的な画像ファイルを再評価して、ヘッダをつけて送り出すという機構が存在するため、cgiモードで動作していると、画像は、text/htmlとして表示される仕組みになっています。
さらに、もうひとつの伏線があります。XREA無料サーバに由来する部分です。
それは、mod_headerです。XREA無料サーバは、広告挿入をこの機能で実行しているので、phpなどのファイルに対してすべて、text/htmlヘッダーをつけようとします。
だから、blogs.phpは、モジュールPHPとして動作し、画像ヘッダーを出すために、広告挿入を停止する必要があります。
mod_rewriteで書き換えられる形式的な、画像ファイル名に対しても、広告挿入を停止する必要があります。
したがって、
RemoveHandler application/x-httpd-phpcgi .php
みたいな事をやってみても対策にはならず、、、(泣)
このため、
ルート.htaccessには以下を追記
LayoutIgnoreURI *.gif LayoutIgnoreURI *.png LayoutIgnoreURI *.jpg
wp-admin/.htaccess
<files async-upload.php> AddHandler application/x-httpd-phpcgi .php </files> <Files plugin-install.php> AddHandler application/x-httpd-phpcgi .php </Files> <Files update.php> AddHandler application/x-httpd-phpcgi .php </Files> <Files update-core.php> AddHandler application/x-httpd-phpcgi .php </Files> <files upload.php> AddHandler application/x-httpd-phpcgi .php </files> #import <files admin.php> AddHandler application/x-httpd-phpcgi .php </files>
wp-content/.htaccess
LayoutIgnoreURI blogs.phpの設定は必要そうです
このように、無料サーバへのインストールは、coreserverへのインストールと異なる設定が必要になるようです。
とても面倒な設定になっていますが、
cgiとして動作させるPHPファイルは、きっちり決め打ちする必要があり、
それを怠ると、単に画像の部分だけでなく、Ajaxレスポンスなどもエラーを発生するので、
手数を惜しまないようにしたほうがいいかもしれません。
参考までに、2.6.5のものですが、phpのヘッダ関数を使っているファイルリストを添付しておきます。
意外と多いのでびっくりしました自分。
このページは、画像の表示がうまくできない wordPressMUサイトの見本として、リンクされました。
しかし、適切な設定を行えば、無料サーバでも、正常に運用が可能です。
昨日まで、リロードすると点滅していた画像も、もう点滅することはありませんし、ファイルアップロードも正常に動作しています。
CGI(PHP)で動いています。
もうすでに見本の価値はなくなりました。
ワードプレスのリンクをブックマークレットから使おうというものですが、カテゴリも分けられるし、画像のURLを別に指定すると、画像リンクもしてくれます。工夫すると使えるんじゃないかと思い ご紹介です。
javascript:void(linkmanpopup=window.open('http://rileycentral.net/wordpress/wp-admin/link-add.php?action=popup&linkurl='+escape(location.href)+'&name='+escape(document.title),'LinkManager','scrollbars=yes,width=750,height=550,left=15,top=15,status=yes,resizable=yes'));linkmanpopup.focus();window.focus();linkmanpopup.focus();
http://rileycentral.net/wordpress/wp-admin/link-add.phpの部分を自分の管理画面リンクの新規追加のURLに置き換えて、ブラウザのブックマークに追加してください
ブックマークしたいページを見つけたら、
追加したブックマークをクリックします。
リンクのページに、URLとタイトルが入力済みで開くので、必要な部分を追記したりカテゴリを入れて、保存します。
というストーリーで動作します。
firefox3.0.10 IE8 で動作確認できました。
iE8は、ポップアップの許可をしてやってください。
BuddyPress will transform an installation of WordPress MU into a social network platform.
BuddyPressとは、MUをSNS化するプラグインだそうです。
配布元:BuddyPress
pluginといっても、テーマファイルもごっそり入ったものです。このため、通常のプラグインのように配置してはい終わりというものではなく、wp-content/bp-themes themes/bphome といった場所へ、手作業でディレクトリの移動を行わなければならないので、readme.txtを読みながら作業が必要です。
SNSですから、いわゆる中の人向けの、コミュニケーションのための機能。
実際に試してみると、firefoxで、CSSが適用できなくなったり、(調べていませんが、headerをtext/htmlで出しているとか、サーバがらみの問題が怪しそう)メンバーリストが、表示できたり出来なかったり、
まだ、WEB上に情報が少なく、触ってみて、動きを見ながら、納得するという事の繰り返しになりました。
ただ、MUユーザには、複数のブログをまとめた形で、最近の投稿を表示したいとか、それぞれのブロガーのwireを一覧表示したいという需要は少なからずあるんじゃないかと思います。
既存のページのサイドバーなどに、それらを配置可能なウィジェットも用意されており、参考になると思います。
日本語化作業は、「
日本語化を進めています」などで、進行中だったり、配布している人もいらっしゃるようです
プログラムそのものもそうなんですが、wire等、あまり耳にしない単語が、「電報」といわれても、ぴんと来ないというのが、一番厄介な部分だと思いました。設定にもよりますが、友人間で行われるつぶやきみたいなものだと気づき始めると、プラグイン自体が、違うものに見えてくるのは不思議です。
現実の私たちは、それほど多くのコミュニケーションの場を求めてはいません。必要なときに、必要なだけのコミュニケーションが取れる事のほうが重要なのかもしれません。
プログラムそれ自体が持つ、高性能よりも、必要なときに、プラグインを適用して、全体の様子を見たり、そのようなものが必要でない時には、シンプルなブログとして運用できたりといった、これまでの発想にないブログの使い道が、広がるといいなと思いました。