WordPress, 投稿画面(HTML)の御作法

WordPressで記事を追加するときに投稿用フォームから追加します。

そんなこと分かってらい!ですよねぇ。

HTMLタグとか分かっていると「ビジュアル」じゃなくて「HTML」モードで追加しちゃう方が手軽だったりします。
私もビジュアル・モードで入力することはまずありません。

で、このHTMLモードで入力するときに慣れたエディタ Dreamweaver なんかでコード入力してコピペしたりしてませんか?
悪くは無いけど注意しないといけないことがあります。

pタグとbrタグは入力しない

pタグとbrタグはWordPressが自動的にHTML整形するときに挿入します。
プラグインなどで抑制することはできますが仕様なのでそれに従っていた方が後々面倒にならないような気がします。

投稿画面で
改行が一つのところには brタグ

改行が二つ続いたところには pタグ

挿入されます。

改行が二つ以上、三とか四続いても二つ扱いになります。

imgタグ一つだけしか入力していない場合も pタグ でwrapされます。

HTML整形部分のコードを見たわけではないですが条件によっては入力した pタグ が消去されてしまうこともあるようです。

私はここの改行は brタグ が入るとかここは1行空いてるから pタグ になるとか想定しながら入力しています。
pタグが入るのが嫌なら divタグ を使います。
当然 divタグ を入れた次の行は空行にしてはダメです。

WordPressもバージョンが上がってこのHTML整形部分の精度はかなり向上しています。
以前はXHTMLなのに pタグの閉じタグだけ追加してValidにならないこともあったりしてイライラさせられたりしましたが、そんなことも随分ご無沙汰です。

これは趣味の問題ですが、インデントも取っちゃいます。

てな話をチョイ前にtacosbarのマスターと話してて、入力しても入力しても pタグ が消えるのはWordPressのバグじゃないのかとかお怒りのご様子でした。
pタグにidとかclassとか設定してたらしいんですけど。
pタグ入力しちゃダメとかどっかに書いてありますか、と問いつめられたのでブログに書くことにしました。

Codexのどっかに書いてあるのでしょうか。

WordPress管理画面にユーザー名とパスワードは正しいのにログインできない

あるサイトで特定のブラウザ(例えばChrome)だとWordPress管理画面にログインできないことが続いていました。

なんでかなとは思いつつ、WordPressのバグだと世界中大騒ぎになるはずなのにそんなこともなく、自分の環境かサーバーのせいだとほったからしていました。
そのサイトだけは通常使用しているブラウザではなくログインできるブラウザに切り替えてましたが、これが不便。

ふとURLをみると…

http://www.example.com/wp/wp-admin にアクセス

ログイン画面にリダイレクト
http://example.com/wp/wp-login.php?redirect_to=http%3A%2F%2Fwww.example.cm%2Fwp%2Fwp-admin%2F&reauth=1

あれれ?wwwがない!

このサイト http://www.example.com/ にアクセスすると http://example.com/ にリダイレクとする仕様になっている様子。

ふ〜ん、アクセスURLとリダイレクトURLが違うからログインできなかったのね。
ではwwwなしでアクセスしましょっと。

WP Remote Manager, 複数WordPressサイトを一元管理

神戸の元気な会社、「め組」でも有名なDigitalCubeの新サービス。

WP Remote Manager
複数のWordPressを一元管理できる新サービスのβテストが開始されました。
http://wp.remotemanager.me/ja/

βテスト中は3サイトを無料で管理できる様子。

このサービス有ると助かること間違いない!

色々と今後に期待大です。

WP Remote Manager

WordPress, Category ArchiveでもStickyさせたい

WordPressで投稿にSticky(先頭に表示)してもCategoryページだと反映されません。

で、次のようにしてみました。

// sticky
$args = array(
	'posts_per_page' => 1,
	'post__in'  => get_option( 'sticky_posts' ),
	'ignore_sticky_posts' => 1
);
query_posts( $args );
while ( have_posts() ) : the_post();
	get_template_part( 'content', get_post_format() );
endwhile;
wp_reset_query();
 
// 残りの投稿
$wp_query->query_vars['post__not_in'] = get_option( 'sticky_posts' );
query_posts( $wp_query->query_vars );
while ( have_posts() ) : the_post();
	get_template_part( 'content', get_post_format() );
endwhile;

previous_post_link / next_post_link, 同じカテゴリの記事へリンク

WordPress, single.phpのナビゲーション、同一カテゴリの記事にリンクをはるテンプレートタグの記述方法で毎回右往左往するのでメモ。

previous_post_link('%link','%title', true);
next_post_link( '%link','%title', true);

【メモ】WordPress, テーマ内のJavaScriptをwp_enqueue_scriptに追加

テーマ内に置いたJavaScriptファイルをwp_enqueue_scriptで呼び出せるように設定する。

functions.php

function js_enque_method() {
   wp_register_script('example_script',get_bloginfo('template_url').'/js/example.js','jQuery','1.0');
   wp_enqueue_script('example_script');
}
add_action('wp_enqueue_scripts', 'js_enque_method');

テーマ内に[js]フォルダを作り、そのフォルダ内に[example.js]があります。
example.jsのVersionは1.0です。
example.jsはjQueryを必要とします。

CodaでもjQueryのコード補完をして欲しい

Codapanic.com の editor Coda がすこぶる便利です。

WordPressのThemeやPluginはほぼCodaで書いています。

一つだけ不満だったのはjQueryのコード補完ができないことです。
Twitterでそのことを愚痴ったら、@kzxtremeさんから jquery syntax mode って便利なものが公開されていると教えてもらいました。

http://digitalsandbox.net/index.php/project/category/jquery_syntax_mode/jquery_syntax_mode

サイトに丁寧に解説されているのでインストールも簡単でした。

digitalsandbox.netからzipファイルをダウンロードし解凍します。
解凍フォルダの .mode ファイルは ~/Library/Application Support/Coda/Modes/ にコピーします。
.clips ファイルはCodaを起動し「クリップ」ウインドウを開きます。ウインドウ > クリップ (⌃⌘C)
「クリップ」ウインドウの左サイドバーで右クリックし「グループの読み込み…」を選択し .clips ファイルを選択します。

Codaで使用は構文モードを jQuey を選択です。

jQuery コード補完はしてくれて嬉しい限りです。
まぁ、最新1.7系が出てこないのはしょうがないですかね。

クリップは他のeditorだとsnippet機能みたいなものでしょうか。
インストールした .clips には以下のものが入っていました。

ready+tab:
$(function() {
/*place jQuery actions here*/
 
});
 
$+tab:
$(’‘)
 
this+tab:
$(this)
 
func+tab:
function() {
 
}

func+tab: は補完の方が強いようで function になってしまいます。
fc+tab に変えました。

変更方法は 「クリップ」ウインドウ Function の [i] ボタンをクリックすると編集モードになります。
好みのキーコンビネーションに変えて「保存」をクリックするだけです。

ますますCodaが便利になりました。

Zend_Mailで日本語メール

Zend Framework Zend_Mailで日本語メール送信メモ。

require_once 'Zend/Mail.php';
$mail = new Zend_Mail('ISO-2022-JP');
$mail->setBodyText(mb_convert_encoding("メール本文。", 'ISO-2022-JP', 'UTF-8'));
$mail->setFrom('noreply@example.com',mb_encode_mimeheader(mb_convert_encoding('送信者名', 'ISO-2022-JP', 'UTF-8'),'ISO-2022-JP'));
$mail->addTo('sendto@example.com',mb_encode_mimeheader(mb_convert_encoding('送信先名称', 'ISO-2022-JP', 'UTF-8'),'ISO-2022-JP'));
$mail->setSubject(mb_convert_encoding('メールタイトル', 'ISO-2022-JP', 'UTF-8'));

WordPress, ループをカスタマイズする3つの方法

WordPressでループをカスタマイズするメモ。

query_posts()
http://wpdocs.sourceforge.jp/テンプレートタグ/query_posts

global $query_string;
// 全投稿出力
$posts = query_posts($query_string.'&posts_per_page=-1');
 
if (have_posts()) : while (have_posts()) : the_post();
   // ループ処理
   endwhile;
else;
   // not found
endif;
 
// ループをリセット
wp_reset_query();

オリジナルのループを元にカスタマイズしたい時に使用する。
wp_reset_queryを最後に実行する。

WP_Query()
http://wpdocs.sourceforge.jp/関数リファレンス/WP_Query

$args = array(
   'post_type'=>'page',
   'post__in' => array('595', '33', 44)
);
$query = new WP_Query($args);
 
while($query->have_posts()) : $query->the_post();
   // ループ処理
endwhile;
 
// 投稿をリセット
wp_reset_postdata();

オリジナルのループを作成、複数のループを作成。
wp_reset_postdataを最後に実行する。

get_posts
http://wpdocs.sourceforge.jp/テンプレートタグ/get_posts

$myposts = get_posts('posts_per_page=5&offset=1&category=1');
foreach($myposts as $post) :
   setup_postdata($post);
   // ループ処理
endforeach;

リセットはいらない。
引数は配列。

update 2012-03-19
get_posts の時Resetはいらないは間違い。
setup_postdataしてるのでResetしないと!

wp_reset_postdata();

ちゃんとリセットしてあげないと不幸が待ってる。

MAMP, MySQLの起動エラーに対処

MAMPのMySQLが突然起動しなくなった。

mysql_error_log.err を見るとInnoDBが起動できないのが原因の様子。

[ERROR] Plugin 'InnoDB' init function returned error.
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[ERROR] Unknown/unsupported storage engine: InnoDB
[ERROR] Aborting

dbフォルダにあったlib_logfile0とlib_logfile1を捨ててたら起動できた。
なんでかな。