2012/06/18: Contact Form 7 で、on_sent_ok が動かない
Wordpressのお問い合わせフォームプラグイン「 Contact Form 7 」で、2重投稿を防ぐ目的で、on_sent_ok を使って、Thank youページへ飛ばそうとしていたのですが、なぜかJSが動いていないことに気づいて、変だなーと思っていたら、
wp_footer();
を
footer.php に書いていないことが原因でした。
Contact Form 7 では、
wp_head()
でCSSと、jQueryを、
wp_footer()
で、フォームを制御する js を読み込んでいるようで、
この wp_footer() を実行しないと、
on_sent_ok で設定する jsが実行されないということが分かりました。
おそらく、Google Analyticsが動かないとか、色々言っている皆さんはだいたい、wp_footer(); が抜けてるのでは?と思いました。
他のプラグインでも、同じ原因で動かなくなることもあるかもなので、テーマを自作している人は注意ですね。
wp_footer();
を
footer.php に書いていないことが原因でした。
Contact Form 7 では、
wp_head()
でCSSと、jQueryを、
wp_footer()
で、フォームを制御する js を読み込んでいるようで、
この wp_footer() を実行しないと、
on_sent_ok で設定する jsが実行されないということが分かりました。
おそらく、Google Analyticsが動かないとか、色々言っている皆さんはだいたい、wp_footer(); が抜けてるのでは?と思いました。
他のプラグインでも、同じ原因で動かなくなることもあるかもなので、テーマを自作している人は注意ですね。
2012/06/18: wp_head(); から jQueryだけ読み込まないようにする
以下のように書けば、header.php などで、wp_headを実行する前に、wp_deregister_script('jquery')と書けば
jQueryだけ、wp_headの読み込みから削除できます。
jQueryだけ、wp_headの読み込みから削除できます。
<?php wp_deregister_script('jquery'); ?>
<?php wp_head(); ?>
2011/08/12: wordpressでスラッグ順に投稿を表示する方法
wordpressループ内の記事内容をどのような順番で表示するかを設定する際には、query_posts関数内の"orderby=〇〇"という引数で、どのような記事が表示されるかを決めます。
例えばタイトル順で並べたいときには、
"orderby=title"
といった具合です。
今回、スラッグの順番で並べ替えたかったのですが、
"orderby=slug"
などとやっても、全く並べ替えてくれませんでした。
ではどうしたらいいのか。
結論から言いますと、スラッグで並べ替えることはできないようです。
ですので、この"orderby"の仕様の部分を書き換えてみました。
とっても簡単です。
(以下は、最新版のwordpress3.2.1を元にしています。)
wp-includes/query.phpの2320行目を書き換え
同ファイルの2354行目に下記を追加
たったのこれだけで、
"orderby=slug"
が使用可能になり、
スラッグ順に投稿を表示できるようになりました。
例えばタイトル順で並べたいときには、
"orderby=title"
といった具合です。
今回、スラッグの順番で並べ替えたかったのですが、
"orderby=slug"
などとやっても、全く並べ替えてくれませんでした。
ではどうしたらいいのか。
結論から言いますと、スラッグで並べ替えることはできないようです。
ですので、この"orderby"の仕様の部分を書き換えてみました。
とっても簡単です。
(以下は、最新版のwordpress3.2.1を元にしています。)
wp-includes/query.phpの2320行目を書き換え
$allowed_keys = array('author', 'date', 'title', 'modified', 'menu_order', 'parent', 'ID', 'rand', 'comment_count');↓
$allowed_keys = array('author', 'date', 'title', 'modified', 'menu_order', 'parent', 'ID', 'rand', 'comment_count' , 'slug');
同ファイルの2354行目に下記を追加
case 'slug':
$orderby = "$wpdb->posts.post_name";
break;
たったのこれだけで、
"orderby=slug"
が使用可能になり、
スラッグ順に投稿を表示できるようになりました。
2008/03/31: WordPressのビジュアルリッチエディタのpタグの自動挿入機能を切る
WordPressのビジュアルリッチエディタは、どうでもいいところにpタグが入ったり、たくさん改行したいのにできなかったり、編集して保存したら、全然違う見た目になってたり、本当に使いにくすぎる。
ということで、pタグの自動挿入機能を切る方法を調べました。
結構面倒だったので、同じ悩みを抱える人のため、自分のために、まとました。
プラグインや設定ファイル一発で変えられたらいいのですが、うまいやり方が見つかりませんでした。もし、何か簡単な方法をご存知の方がいらっしゃいましたら、是非コメントなどでお知らせください。
ちなみに、WordPressのバージョンは、
ME2.2.3 です。
編集しなければならないファイルは2つ。
1つずつ説明します。
■tiny_mce.js
wp-includes/js/tinymce/tiny_mce.js
にある、ファイルを編集します。
ビジュアルリッチエディタの要の部分です。
handleEvent : function(e) という関数(メソッド?)の中にある
上記記述がある部分をまずコメントアウト。
1000行目〜1500行目あたりに、3箇所ぐらいありました。
キー入力を、switch文で振り分けているところで、
みたいな条件が書かれているあたりです。
上記条件ごとコメントアウトしてOK。
ちなみに、「 Insert P element instead of BR」の記述がある部分は、isGecko、isOpera、isSafariという条件にあるように、IE以外のブラウザでのみ有効なので、IEの方のプログラムも変えます。
それが、
という条件がある部分で、
tinyMCE.settings['force_br_newlines']をtrueに設定する必要があるのですが、これを設定する場所を探すよりも、ここの条件を常にtrueにしてしまうほうが楽なので、ここの条件を変えてしまいます。
↑こんな感じ。
あと、
の条件の中での処理もコメントアウトします。
※e.keyCode == 13 は、エンターキーのことです。
以上で javascript で編集時に、自動的に
あと、
を
とします。
以上です!
ここまで調べるのに数時間かかりました。(笑
とか、書いてたら、formatting.php周辺の記事が出てきたり。。(笑
http://web-pallet.com/a-blog/tb.php?ID=172
http://camcam.info/wordpress/224
あ、よく見たら、camcamさんの、brBrbrというプラグインは前から使ってました。ので、これもインストールしておいたほうがよさげですね。新しい記事(上記URL)もありましたし。要チェックです。
ということで、pタグの自動挿入機能を切る方法を調べました。
結構面倒だったので、同じ悩みを抱える人のため、自分のために、まとました。
プラグインや設定ファイル一発で変えられたらいいのですが、うまいやり方が見つかりませんでした。もし、何か簡単な方法をご存知の方がいらっしゃいましたら、是非コメントなどでお知らせください。
ちなみに、WordPressのバージョンは、
ME2.2.3 です。
編集しなければならないファイルは2つ。
1つずつ説明します。
■tiny_mce.js
wp-includes/js/tinymce/tiny_mce.js
にある、ファイルを編集します。
ビジュアルリッチエディタの要の部分です。
handleEvent : function(e) という関数(メソッド?)の中にある
// Insert P element instead of BR
上記記述がある部分をまずコメントアウト。
1000行目〜1500行目あたりに、3箇所ぐらいありました。
キー入力を、switch文で振り分けているところで、
if ((tinyMCE.isGecko || tinyMCE.isOpera || tinyMCE.isSafari) && tinyMCE.settings['force_p_newlines'] && e.keyCode == 13 && !e.shiftKey) {
みたいな条件が書かれているあたりです。
上記条件ごとコメントアウトしてOK。
ちなみに、「 Insert P element instead of BR」の記述がある部分は、isGecko、isOpera、isSafariという条件にあるように、IE以外のブラウザでのみ有効なので、IEの方のプログラムも変えます。
それが、
if (tinyMCE.isIE && tinyMCE.settings['force_br_newlines'] && e.keyCode == 13)
という条件がある部分で、
tinyMCE.settings['force_br_newlines']をtrueに設定する必要があるのですが、これを設定する場所を探すよりも、ここの条件を常にtrueにしてしまうほうが楽なので、ここの条件を変えてしまいます。
if (tinyMCE.isIE && e.keyCode == 13)
↑こんな感じ。
あと、
if (tinyMCE.isIE && e.type == "keydown" && e.keyCode == 13)
if (tinyMCE.isIE && e.type == "keyup" && e.keyCode == 13)
の条件の中での処理もコメントアウトします。
※e.keyCode == 13 は、エンターキーのことです。
以上で javascript で編集時に、自動的に
タグが入らないようになります。
■formatting.php
wp-includes/formatting.php
に、あるファイルを編集します。
ここでは、DBから読み取ったテキストデータをビジュアルリッチエディタ用のデータにフォーマットする関数をいじくります。放っておくと、ここでもpタグがPHPによって勝手に入れられてしまいます。
ここでは、wpautop という名前の関数を編集します。
コメントアウトするのは以下の記述
$pee = preg_replace("/\n\n+/", "\n\n", $pee); // take care of duplicates
$pee = preg_replace('/\n?(.+?)(?:\n\s*\n|\z)/s', "<p>$1</p>\n", $pee); // make paragraphs, including one at the end
$pee = preg_replace('!<p>([^<]+)\s*?(</(?:div|address|form)[^>]*>)!', "<p>$1</p>$2", $pee);
あと、
$pee = preg_replace('|(?<!<br />)\s*\n|', "<br />\n", $pee); // optionally make line breaks
を
$pee = str_replace("\n", "<br />\n", $pee);
とします。
以上です!
ここまで調べるのに数時間かかりました。(笑
とか、書いてたら、formatting.php周辺の記事が出てきたり。。(笑
http://web-pallet.com/a-blog/tb.php?ID=172
http://camcam.info/wordpress/224
あ、よく見たら、camcamさんの、brBrbrというプラグインは前から使ってました。ので、これもインストールしておいたほうがよさげですね。新しい記事(上記URL)もありましたし。要チェックです。