Sponsored Link

Archive for the ‘未分類’ category

管理画面のthickBoxを流用する

9月 10th, 2009

Samples

画像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";
2009/9/27パスの記述を修正しました。
理由:
/wp/wp-includes…から始まる指定だと、アーカイブ表示のときに、画像が表示されなくなるため。

tb_pathToImage,tb_closeImageのパスを変更する必要があります。

以上でthickboxを利用することができます。

現在利用しているテーマファイル名を調べる。

8月 26th, 2009

カレントテーマファイルの情報(style.css)のコメント欄に記載しているものを、取得したい。
と思いましたが、そのような日本語情報は、少なかったので、メモに残しておきます。

現在使用しているテーマの名前は、以下のようにして求められるようです。

$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'];
?>

なんかおかしい

8月 4th, 2009

XREA無料サーバでwordPressMU ちょっと動作がおかしいです。

ajaxでのエラーも出ているようなので、近々もう一度調べたいと思います。

画像などのヘッダが、text/html担っている様子です。
画像ファイルは、そのままあるようですが、表示できなくなっている様子

クラスになったウィジェット

8月 4th, 2009

2.8.2にアップデートして、ウィジェットのページが、だいぶ変わっていることに遅ればせながら気づき、
そういえば、クラスになったウィジェットをためしてみようと思いました

ウィジェットAPIのページを見れば、できそうです。

ウィジェットのページは、以下のようになっています

ウィジェットタイトルと簡単な説明書きを表示するようになっているわけですが、最初に紹介したページには、概要やタイトルをどのように記述すればいいか、見つけることができなかったので、方法をメモしておきます。

コンストラクタを、以下のように変更すると、表示できるようです。
 
 /** constructor */
    function hogeWidget() {
	$widget_ops = array( 'description' => 'ここにウィジェットの説明文') ;
 
        parent::WP_Widget(false, 'ウィジェットのタイトル',$widget_ops);	
    }

※クラスファイルは、PHP4のクラスを作らないとだめなようです。PHP5の function __construct() { といった書き方はできませんでした。

2.8にアップデートして、管理画面 スタイルが効かない場合の対策

6月 16th, 2009

xrea サーバで2.8にアップデートして管理画面のスタイルが効かない場合phpがcgiとして動作している問題が関与していました。

シングルユーザワードプレスのアップデートで発生した問題です。

原因:load-styles.phpが、header()を使っているために、CGIとして動かすことができません

対策:wp-admin内のファイルで、CGI動作させる必要のあるファイルを限定。.htaccessを見直し

類似の事例

続 XREA無料サーバにWordPress MUを設置 (完結編のつもり)

6月 3rd, 2009
修正したエントリを  XREA無料サーバにWordPress MUを設置 (完結編のつもり) で公開しています。

やってみて動かなかった人、ごめんなさい。

このエントリは、6/3に公開したエントリですが、
8/4編集操作しようと思ったら、ヘッダがtext/htmlに戻っている様子です。
Ajaxのエラー、画像表示ができない。など、解決したと思っていたものが、元に戻ってしまいました
チェックしなおしてみます。しばらくお待ちください。

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のヘッダ関数を使っているファイルリストを添付しておきます。
意外と多いのでびっくりしました自分。

参考:セーフモードによる制限と対処方法 wordpress codex

しっかり考えて、がんばろう。

6月 3rd, 2009

このページは、画像の表示がうまくできない wordPressMUサイトの見本として、リンクされました。

しかし、適切な設定を行えば、無料サーバでも、正常に運用が可能です。

昨日まで、リロードすると点滅していた画像も、もう点滅することはありませんし、ファイルアップロードも正常に動作しています。

CGI(PHP)で動いています。

もうすでに見本の価値はなくなりました。


wordPress リンク で ブックマーク Link this してみませんか?

5月 22nd, 2009

ブックマークは、hatenaだとかをよく使っているんですが、ワードプレスのリンクのページは、ほとんど使ったことがないのに気づき、
ブックマークレットなら、「もう誰か きっと やっている」と思い調べてみました

linkpage bookmarklet

ワードプレスのリンクをブックマークレットから使おうというものですが、カテゴリも分けられるし、画像の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は、ポップアップの許可をしてやってください。

wp-syntax.php

2月 15th, 2009

サーバサイドで変換するPHPのシンタックスハイライター

使い方、

htmlモードで、pre エレメントで囲みます。

-line:開始行番号。表示を10行目からにしたい場合は、line=”10″

-行番号を表示しない、line=”1″を書かない

<pre lang="php">ソースコード

※preが2重になっているような場合、閉じタグのpreが抜けてしまうようです。

ホントはこう書いたんですが、

<pre lang="php">
<pre lang="php">ソースコード</pre>
</pre>
<small style="color:red">※preが2重になっているような場合、閉じタグのpreが抜けてしまうようです。</small>

wp-syntax.phpで、pエレメントに、クラス名やidを書くようなプラグインを併用した場合には、MD5の値が表示されるだけで、ソースが表示されません。

例、wordpress<p>でくくるが、text2htmlは、<p id="hoge">になっているような時

wp-syntax.phpの以下の部分を書き換える事で、動作します。

function wp_syntax_after_filter($content)
{
    global $wp_syntax_token;
 
     $content = preg_replace_callback(
 
         "/
]*&gt;\s*".$wp_syntax_token."(\d{3})\s*&lt;\/p&gt;/si",
 
         "wp_syntax_highlight",
         $content
     );
 
    return $content;
}

XML Sitemap Generator for WordPress 3.1.2

2月 13th, 2009
XML Sitemap Generator for WordPress 3.1.2

XML Sitemap Generator for WordPress 3.1.2 plugin インストールで、MU特有?の問題があったのでメモ。

pluginを検索して、インストールするところまでは、問題がなかったのですが、

Location of your sitemap file の部分で、Automatic detectionが、パスを間違えて発行している様子なので、メモにしておきます。

path: /virtual/hogehoge/wordpressRoot/sitemap.xml
url:http://www.exsample.com/wordpressRoot/blogname/sitemap.xml

このように、パスと、URLがずれてしまい。そのURLにアクセスすると、file not foundになってしまう。

Custum locationをチェックして、

path: /virtual/hogehoge/wordpressRoot/sitemap/blogname.xml
url:http://www.exsample.com/wordpressRoot/sitemap/blogname.xml

上記のように変更した。