WordPressのテーマ作成時におけるCSSの初期化の問題点

2010年06月09日

CSSを記述する場合、各ブラウザでのデフォルトのスタイルを消す為に、最初に初期化の記述をするのが一般的だ。

例えば、http://coliss.com/articles/build-websites/operation/css/439.html に掲載されているように。

しかし、WordPressのテーマを作成するときには、少し困ったことがあった。

WordPressに、ビジュアルエディタのプラグインTinyMCEをインストールし、エントリーを編集している場合である。

tableの編集画面で、中央揃えにするとHTMLタグにはalign=centerが入る。

初期化でmargin:0にしていると、タグの属性でalign="center"を記述しても中央揃えにならない。
style="margin-left:auto;margin-right:auto;"を記述すれば、初期設定のmargin:0;を上書きして、中央ぞろえになるのだが、align="center"では中央揃えにならないのである。

この事を理解している者が、エントリーを投稿するのであれば、HTMLエディタもしくはtableの編集ダイアログボックスのスタイルにstyle="margin-left:auto;margin-right:auto;"を書き込めばいいので、問題ないが、「HTMLやCSSの知識がない人でも、更新や編集が可能」と売りにしている場合、つまりWordPressを使ってクライアントのサイトを構築し、クライアント自身で更新作業を行うような場合には、これは問題である。

ひとまず、初期化の記述にtableは含めないようにしているが、他に良い方法はないだろうか?
ブログランキング・にほんブログ村へ

【カスタマイズ】投稿編集画面にログインしているユーザーが編集可能なポストのみを表示する。

2009年08月01日


WordPressで複数ユーザーで記事の投稿をする場合


投稿したポストを誰が編集できるのかなどの権限を決める必要がある。


デフォルトで管理者、編集者、作成者、寄稿者、購読者のユーザーがあり、それぞれ権限が設定されている。

この、権限を詳細に設定するには「Role Manager」や「Role Scoper」などのプラグインがあるので、これらのプラグインを使えばよい。


複数のユーザーが、同じ企業である場合は他のユーザー投稿したポストが見えても、さほど問題はないかと思うが、各ユーザーが同じ団体に属していない場合など、他ユーザーの投稿したポストは編集画面では見えないほうがいい。


仮に、同じ団体のユーザーであっても、自分が編集できるポストのみ表示されるほうが、投稿編集画面は使い勝手がいいはずだ。

現在ログインしているユーザーが編集可能なポストのみを投稿編集画面の一覧に表示できるようにできないだろうかと試してみた。


プラグインの使用



まず、「Role Scoper」というプラグインを使用するようにすると、編集可能なポスト、カテゴリ、ページのみが表示されるようになる。

しかし、この「Role Scoper」というプラグインは、英語での表記のみであり、多機能すぎる。

新規投稿画面や編集画面に新しい項目が表示され、それも英語である為、ユーザーにとって難解になり使い勝手が悪くなるのではと懸念される。

「Role Manager」は、権限を設定するだけなので、使い方はシンプルだが、このプラグインを導入しても、編集可能なポストのみが表示されるようにはならない。

ちなみに「adminimize」というプラグインも使ってみたが、ユーザーグループ毎に、管理画面に表示する内容を設定できるが、編集可能なポストのみを表示する設定は、いろいろ試してみたが見つからなかったので、おそらくないと思う。


phpファイルをカスタマイズ


WordPressのPHPファイルに手を加えることはしたくないのだが、自分はまだプラグインを作りきらないので、直にPHPファイルに手を加えることにした。


投稿編集画面のファイルは、wp-adminディレクトリ内のedit.phpである。



edit.phpを見ると、263行目あたりに


<?php include( 'edit-post-rows.php' ); ?>とある。

ここが、ポスト一覧が表示されている部分である。


edit-post-row.phpを開いてみる。

<?php post_rows(); ?>とある。post_rows()という関数を探すと、includeディレクトリ内のtemplate.phpに定義されいる。


post_rows関数の中で、_post_row関数が呼びだされている。


_post_row関数は、1367行から始まる。


_post_row関数の中で、current_user_canという関数が使われて、この関数のreturnによって条件分岐がされている。


デフォルトでは、この条件分岐によって、編集のチェックボックスや「削除」「編集」などのリンクが表示されるようになっている。


なので、この条件分岐を1385行目のforeach直後から、1554行目あたりのforeachの閉じカッコまで、くくるように変更した。


これで、現在ログインしているユーザーに編集可能なポストのみが投稿編集画面の一覧に表示されるようになった。



ブログランキング・にほんブログ村へ

Word Pressをインストール

2007年08月22日

さくらインターネットのレンタルサーバーにWord Pressをインストールしました。

Word Pressはインストールが簡単だということだったのですが、思わぬ落とし穴に気づかずに、てこずってしまいました。

気が付けば、馬鹿みたいな初歩的ミスだったんですけどね。

一応、環境を記載しておきます。
サーバー:さくらインターネット スタンダードプラン
Word Press:wordpress-2.2.1-multilingual-edition

インストールに関しては、ダウンロードしたZIPファイルを解凍すると、その中にreadme.htmlというファイルがありますので、それを参考にすると、問題なく出来ると思います。

途中で頓挫したときは、「書いてるとおりにできねぁじゃなぇか」と思い、さくらインターネットにインストールするのはあきらめようかと思いましたが、結果的に頓挫した原因が分かると書いているとおりにやれば出来ると言えます。

readme.htmlから、「インストール - たった5分で簡単インストール」のとこの「もっと詳しく」をクリックするとhttp://wordpress.xwd.jp/begin/こちらのページが開きます。

このページの「サーバー環境を確認する」のとこに
SAKURA Internet : お試し期間14日間
スタンダードプラン以上で利用可能。PHPファイルのパーミッションを755とし、CGI として動作させなければならないため初心者には敷居が高いと思われる。


と書いてありますので、「Forbidden
You don't have permission to access /wordpress/ on this server」というエラーが出てインストールが頓挫したときは、ファイルやフォルダのパーミッション設定が原因と思い込んでいました。

さくらのサーバーにWord Pressをインストールする際の基本的なことは、上記のhttp://wordpress.xwd.jp/begin/

WordPressの設置は楽勝?

WordPress インストールガイド
を参考にしました。

注意すべきことは、普通はWordPressのディレクトリのパーミッションを707もしくは777にするように説明されていますが、さくらのサーバーの場合は705にすることです。

インストールが頓挫したときに、これらのサイトに書かれていることを、参考にチェックをしました。
しかし、原因は分からないままでした。

しかし、途中で気づいたんです。
「http://example.com/wordpress/」にアクセスすると上記のエラーがでますが、
「http://example.com/wordpress/index.php」にアクセスすると、正常にページが表示されることにです。

結局、「インストールが頓挫した」と書いてますが、インストールは正常に完了していました。

.htaccessによるアクセスの設定が原因でした。

さくらインターネットは初期設定では、フォルダの中に「index.html」が存在しない場合、「Index Of」のページを表示されてしまい、そのフォルダないのファイルが丸見えになってしまいます。

僕はそれを避けるために、コントロールパネル>ファイルマネージャーで設定をしていました。
その方法はさくらインターネットのFAQに書かれています。
インデックスファイルが存在しない時にフォルダ内が表示されないようにするにはどうしたらいいですか?

「サーバコントロールパネル」で提供されている「ファイルマネージャー」をご利用ください。

◆ 設定方法 ◆
1.「サーバコントロールパネル」の、カテゴリ「ツール」から『 ファイルマネージャー 』をクリックします。
2.画面右上に表示されている、『 >> ウェブアクセスの設定 』をクリックします。
3.「デフォルトファイル」の項目のファイルが存在しない場合の動作で『 アクセスを拒否する 』を選択します。
4.『 変更を送信 』 を押します。

この設定を行うと、設定を行ったフォルダ以下すべてのフォルダで設定が反映されます。


この設定にIndexファイルの名前というのがあります。初期設定ではindex.htmlとindex.htmだけです。
つまり、index.phpがIndexファイルとして登録されていなかったわけです。

Word Pressで構築したサイトは htmlファイルではなくて、phpファイルで作成されますからね。
PHPファイルによって、動的にページを生成するゆえに、再構築の必要がないことがWord Pressの特徴の一つでしたね。

index.phpをインデックスファイルに設定していなかったことが、頓挫していまった原因でした。

気づく前は悩みましたが、気づけば初歩的なミスですね。

これから、Word Pressをいろいろ試してみたいと思います。



ブログランキング・にほんブログ村へ