Home > wordpress
wordpress Archive
[WPPH06]カテゴリ一覧の投稿数表示の丸括弧を角括弧に変更するプラグイン
- 2010-02-18 (木)
- WP Plugin Hacks | wordpress
先に書いた[WPCH vol.05]RE:カテゴリー一覧の書式を変えるのおまけとして、コアソースは修正せずにプラグインで対処する方法もメモしておきます。いつものように自己責任でどうぞご自由にお使いください。
正規表現をもうちょっといじろうかと思ったんだけどカテゴリとアーカイブで出力が(ちょっとだけ)違うので面倒になってやめましたw 別々の function を書いて正規表現を別にすればもうちょっと正確に書いて速度上げられるかなとも思うけど、ぶっちゃけ誰も使わないんじゃないか、とか。
<?php
/*
Plugin Name: wp_list_category count bracket changer
Plugin URI: http://officel.biz
Description: wp_list_category(wp_list_cat,WP_Widget_Categories含む)の投稿数表示の()を[]に変更する
Version: 1.1.0
Author: Y.Nishimura
Author URI: http://officel.biz/
*/
function listcatcntbracket($content) {
return preg_replace("/\((\d*)\)/", "[$1]", $content);
}
add_filter('wp_list_categories', 'listcatcntbracket');
// アーカイブも変更したいならついでにこれを使う
// add_filter('get_archives_link', 'listcatcntbracket');
?>
- Comments: 0
- Trackbacks: 0
[WPCH vol.05]RE:カテゴリー一覧の書式を変える
- 2010-02-17 (水)
- WP Core Hacks | wordpress
時々拝見してるブログに書いてあったので軽くメモしてみます。(元のブログはこちら)
バージョンが進むに連れてコード的には読みやすくなってきてるはずの WordPress ですが、設計思想を把握していない門外漢にはやさしくない作りなのは否めないですよね。コアのソースがいじりにくいからフックが進化してるというかw 先日もどこぞのブログか何かで話題にあがっていた、優秀な人材が無能化なんたらじゃないですが、元々の機能だからここはいじらない、みたいなのが積み重なって出来てるよなぁって感じは否めない、ですかね。
さて、話を戻しましょう。 wp_list_categories (ちょっと古いテンプレだと wp_list_cat)で、show_count オプションを 1 にする( wp_list_cat だと optioncount を 1 にする)と、出力されるカテゴリーのリストの後ろに、カテゴリー毎の投稿数が表示されますが、このフォーマットは固定なので、echo オプションで変数化して置換する(元記事でやってる方法)か、フィルターフックで置換するか(これは後で別にエントリーしましょうw)、コアソースを直すか、のいずれかの手段をとるわけです。今日は、このコアソースを修正するについて、です。(前置き長いなー
前置きでひっぱっておいてアレですが、場所は /wp-includes/classes.php の1367行目付近です。あ、バージョンは2.9.2です。
if ( isset($show_count) && $show_count )
$link .= ' (' . intval($category->count) . ')';
を
if ( isset($show_count) && $show_count )
$link .= ' [' . intval($category->count) . ']';
のようにすればOKです。
ちなみに、wp_dropdown_categories を使う時は、同じファイルの1450行目付近の
if ( $args['show_count'] )
$output .= ' ('. $category->count .')';
を
if ( $args['show_count'] )
$output .= ' ['. $category->count .']';
のようにすればOKです。
もうデザイン的に丸括弧をやめたい、のであればコアソースを修正してしまうほうがそりゃ早いですね。上記付近を修正すれば、丸括弧までをリンクにするのも簡単ですし。
- Comments: 2
- Trackbacks: 1
[WPPH04]category_description の p 要素を出力しないようにするには
- 2009-11-19 (木)
- WP Plugin Hacks | wordpress
昼間に Twitter で category_description() が不要な<p>要素をつけて出力するのがどうこう、というつぶやきを見たので、除去してみました。(もちろん本人には既にメールで説明済み)
確かに自前でキレイな html を出力しようと思ったら、<p>を勝手につけるのやめて欲しいですよね。
というわけで category_description() をちょっと追ってみたのでメモ。
バージョンは WordPress 2.8.5 です。まだ 2.8.6 にしてない(汗
結論1
function.php とかに
remove_filter('term_description','wpautop');
って書いておけばとりあえず <p> は出力されなくなります。
ただ、term_description フックだと、tag_description() もひっかけてしまいます。。。
現状ではテーマ中に tag_description() を書いてるとか、そもそもタグに説明文つけてるとか、あんまり多くもないと思うので別にかまわない気もするんだけど。
そもそも category_description() にちゃんとフックがあればいいのに、とか。(別関数を直接 return する書き方になっているのでフックはない。はず。)
ちなみにきちんと調べてないけど、 term_description フックは今のところタグとカテゴリしか使ってないっぽいので他は大丈夫みたい。
結論2
どうしても先のやり方に抵抗があるとか、部分的にどうにかしたい、しかもできるだけ何やってるかわかりやすくテーマに書き込んでおきたい、というレアな人には、テーマ中で(もちろんis_category()のチェックした中で)
<?php $a = category_description(); $a = substr($a,3); $a = substr($a,0,-5); echo $a; ?>
てゆー感じにすると、いいかなと。
説明は要らない気もするけど、
category_description() の値を変数 $a につっこんで、
先頭の<p>(これが3バイト)と、
最後の</p>(改行コード込みで後ろから5バイト)を取り除いて
echo してあげると。
こんな面倒なことするくらいなら先の remove_filter 使うほうが断然楽だと思うけどw
結論3
ぐぐったら出てきたネタ。
2と同じようにテンプレート中で、オブジェクトを使って直接値だけ引っ張ってくる方式。
echo $category->category_description; みたいなの。
でももしかしてこれだと、wptexturize とか、convert_chars フックも使われない気がするんだけど、大丈夫なのかな?
いや、もちろん自分で入力したカテゴリの説明文だから、そんなにひどい変換が必要な文字も入れない気はするけれども。
- Comments: 0
- Trackbacks: 1
[WPPH03]Add-X-Hacker プラグインのバージョンアップ(Ver1.1.0)
- 2009-10-16 (金)
- WP Plugin Hacks | wordpress
先月お遊びで公開した、Add-X-Hacker plugin をバージョンアップしました。
明後日の17日土曜日に開催する勉強会で、WordPress プラグインの作り方として紹介するために、管理画面を追加して、DBにデータを格納するようにしてみました。これ以上ないくらいコメントも入れてあるので、見れば誰にでもわかるだろうレベルになっていると思います。
ちなみに、勉強会中でこのプラグインの問題点を問うて、考えたり勉強したりする時間をとるつもりなので、たくさんの問題というか、不備を抱えたままになっています。例えば、次のような問題です。
- 改行が入力できてしまう。
わざと入力しなければ問題ないのですが、機能として改行を除去するようにすべきでしょう。なぜ改行が入るとまずいのかは勉強会で話します。 - エスケープされていない。
受け取ったデータを直接しまって、そのまま出力に使っているため、タグ記号やダブルクォーテーションなどの入力で画面が壊れます。入力しなければいいだけですけれども。 - 日本語等も受け付けてしまう。
本来入っているべきではない(ヘッダとして出力されるべきでない)文字もそのまま入力できてしまうので、知らずに不適切な入力を行うと、困ったことになる人が出るかもしれません。 - 入力を空にしてもヘッダを出力してしまう。
値が入力されていないなら、ヘッダラインとして出力すべきではないでしょう。
お遊び程度の簡単なプラグインといえども、いろいろな問題を抱える可能性があることを示してみました。勉強会ではこれらについて参加者と話し合いながら理解を深めてもらう予定です。
で、最後に、いつものように Add-X-Hacker プラグインをダウンロードして、pluginsディレクトリにアップロードして、管理画面から有効化して使ってください。初回同様自己責任でお好きなようにどうぞ。前述の問題点等に気をつけて、書き直してみるのもいいですね。
- Comments: 0
- Trackbacks: 0
[WPPH02]WP2.8系の新しいフック wp_headers (If you’re reading thisってやつ。
- 2009-09-13 (日)
- WP Plugin Hacks | wordpress
最近違うことやってて WordPress から遠ざかってたんですが、先日懐かしいネタというか、新しいネタというか、とにかくちょっとだけハックっぽい記事を見つけたので、プラグインにしておくかと思い立って作ってみました。
この記事によると、WordPress.com では、HTTPレスポンスヘッダーに X-hacker ヘッダをつけているそうです。一般ユーザはあんまり見ない(であろう)レスポンスヘッダに文字を埋めとくなんて古典的なネタだけど、時代は回っているものなので、こういうのも原点回帰っぽくて面白いかなぁと。
HTTPレスポンスヘッダに勝手なレスポンスをつける方法は大雑把に3つ、
- httpd.conf に設定する
- .htaccess で設定する
- プログラムから出力する
httpd.conf で設定するのがレスポンス的には早いわけだけど、WEBサーバの設定をそう簡単にいじれるわけでもないと思うのでまず無視(依頼があれば説明してもいいけど)。.htaccess に設定する方法は、WordPress ユーザなら(パーマリンク設定をしていれば)普通に使っているはずなので簡単かな?と思ったんだけど、うちの環境で試したら、モジュールが有効になってませんエラーが出てうまくいかなかった。同じようなことが他所でも発生するかもしれないのでこれも無視(この辺見ればやりかたはわかる)。というわけで、最後のプログラムから出力する、について説明します。
WP2.8系は内部的にいろいろ変更が加えられていて、フィルタフック、アクションフックがたくさん追加されています。その中にwp_headersというフィルタフックがあって、WP本体の中ではsend_headersというかなり初期の段階で走るfunctionの中で使われています。ちなみにこのfunctionの中でX-Pingbackヘッダも出力されています。
というわけで、このwp_headersフィルタに、好きなヘッダを追加してあげれば、wordpress.comと同じように、X-hackerヘッダを(誰でも)追加できるようになります。いちいち画面作ったりするのが面倒なので、直接プラグイン中の文面を修正して使ってください。
<?php
/**
* @package Add_X_Hacker
* @author Y.Nishimura ( Office L )
* @version 1.0.0
*/
/*
Plugin Name: Add X-Hacker Header
Plugin URI: http://officel.biz
Description: HTTPレスポンスヘッダに X-hacker ヘッダを追加する
Author: Y.Nishimura
Version: 1.0.0
Author URI: http://officel.biz/
*/
function addxhacker($content) {
// 'test now' を If you're reading this,?のようにすればOK
$headers = array('X-hacker' => 'test now');
return array_merge($headers,$content);
}
add_filter('wp_headers', 'addxhacker');
?>
ネタとして会社さんなら特別入社窓口ページに飛ばすとか、個人でハッカー(のような)人とお友達になりたければ連絡先を入れてみるとか(おっと、くれぐれも自己責任で。連絡先なんか書いておいたらスパムの餌食になるかもしれないってことは忘れないで!)使い方は人それぞれですかね。
addxheader.phpファイルをダウンロードして、書き換えて、pluginsディレクトリにアップロードして、管理画面から有効化すると使えます。前回同様自己責任でお好きなようにどうぞ。
- Comments: 1
- Trackbacks: 1
[WPCH vol.04] RSSをハック。ちょっとした工夫で gmail の random signature に対応
- 2009-02-17 (火)
- WP Core Hacks | wordpress
先日の投稿でバージョンアップでコアの変更が飛んだ話をしたばかりですが、プラグインだと変更しにくいものがあるのは確かなので、コアハックは続けていこうと思います(この投稿の内容は WordPress 2.7 で確認しています)。
今日は RSS の出力を変更する、です。
gmail を使っていて、WordPress でブログを書いたりサイトを運営したりしている人に朗報です。gmail のラボ機能にある random signature をご存知でしょうか。名前のとおり署名部分にランダムな1文を入れてくれる機能です。ラボ機能についてはGmailに13の新機能が追加!すべての機能を解説! | Google Mania – グーグルの便利な使い方あたりを参考にどうぞ。
で、この random signature ですが、そもそも簡易な1文を追加するお遊びの要素が強く、RSS 中の title 要素の中を出力してくれるだけなんですね。なので、たいていの RSS 出力を処理してくれます。ただ、名言を出力するというデフォルトの使い方では、自分で文章を選べませんし、せっかくのインターネット時代にパソコン通信的な使い方をしていたのでは面白くありません。せっかくだから自分の記事とそのリンクも貼りたいですよね。
というわけで(前置き長っ!)、本日は WordPress の RSS 出力をいじくって、記事タイトルとリンクの両方を gmail の新規メールに差し込んでみましょう、という試みです。
まず注意しないといけないことは、WordPress は RSS,RSS2,ATOM などのフォーマットでフィードを出力することができるので、どれを使っていて、どれが使われていないのか、を把握しないといけない、ということです。既に誰かが自サイトのフィードを購読しているのに、その出力をいじくってしまっては迷惑ですよね。気をつけてください。(自サイトがどのフィードを出力しているか、が把握できない人は対処しないほうがいいかもしれません。。。)
いじくるファイルは、フィードの種類に合わせて、wp-includes 中の、feed-rss.php , feed-rss2.php ,feed-rdf.php , feed-atom.php のいずれかです。今回は一番手軽な RSS をいじることにするので、feed-rss.php を修正します。バックアップは自己責任でちゃんと取ってください。
<?php
/**
* RSS 0.92 Feed Template for displaying RSS 0.92 Posts feed.
*
* @package WordPress
*/
header('Content-Type: text/xml; charset=' . get_option('blog_charset'), true);
$more = 1;
?>
<?php echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?>
<?php the_generator( 'comment' ); ?>
<rss version="0.92">
<channel>
<title><?php bloginfo_rss('name'); wp_title_rss(); ?></title>
<link><?php bloginfo_rss('url') ?></link>
<description><?php bloginfo_rss('description') ?></description>
<lastBuildDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_lastpostmodified('GMT'), false); ?></lastBuildDate>
<docs>http://backend.userland.com/rss092</docs>
<language><?php echo get_option('rss_language'); ?></language>
<?php do_action('rss_head'); ?>
<?php while (have_posts()) : the_post(); ?>
<item>
<title><?php the_title_rss() ?> [ <?php the_permalink_rss() ?> ]</title>
<?php if (get_option('rss_use_excerpt')) { ?>
<description><![CDATA[<?php the_excerpt_rss() ?>]]></description>
<?php } else { // use content ?>
<description><?php the_content_rss('', 0, '', get_option('rss_excerpt_length')) ?></description>
<?php } ?>
<link><?php the_permalink_rss() ?></link>
<?php do_action('rss_item'); ?>
</item>
<?php endwhile; ?>
</channel>
</rss>
赤字の部分を削除して、青字の部分を書き足すだけです。簡単!これで、http://自サイト/?feed=rss みたいにすると、各エントリが、”タイトル [ URL ]”って感じになるはずです。
きちんと確認できたわけではありませんが、random signature は読み込めるファイルサイズに制限があるようで、概要や本文などが含まれているデータ量の大きいフィードだと、ランダムにできないようです。これに対処するため、赤字部分(見てのとおり概要か全文を出力している部分)を取ってしまいます。また、フィードの性格からすると、link 要素をリンクとして出力してくれてもよさそうですが、残念ながら random signature は link 要素を出力してくれないので、title 要素の中に URL を入れてしまいます。これによりURLが出力できるわけですね。 link 要素自体は削除してしまってよさそうですが、将来的な変更に備えてとりあえず残しておきます。
修正した RSS が狙い通りに出力されることを確認したら、gmail に設定してください。メールを作成のリンクをクリックするたびに、署名としてタイトルとリンクが出力されれば完成です。(gmailの設定で言語を英語にし、labo タブで random signature を enable にして保存、その後言語を日本語に戻して、全般タブの署名のところにURLを入れればOKです。)
最後に今回の件で苦労した部分、気がついた部分をまとめておきます。なんかおかしいなと思ったら読んでみてください。
- Firefox で RSS を確認しているとキャッシュが効きすぎるようです。Safari では即時反映されますが、Firefox でのRSS確認は時間がかかります。通常のリロードや Shift キーを押しながらのリロードでも更新されないのには参りました。
- gmail で RSS がキャッシュされます。更新頻度がものすごく悪いようなので、gmail への設定は RSS の出力がうまく出来ていることを確認してからやるのがよいようです。
- 本文にも書きましたが、RSS のサイズが大きいとランダム化されないようです。概要も本文もなしにしてサイズを削り、この対処を行うフィードは、random signature 用と割り切ったほうがよいようです。
- タイトル部が長いのもまずいようです(メール的にも)。もし長いタイトルを頻繁に投稿するようであれば、substring 関数などで文字を削るといいでしょう。
- もし特定のカテゴリだけを出力したい場合は、http://自サイトURL/?feed=rss&cat=1 のように、カテゴリIDを追加指定してあげればOKです。
- なんらかの不具合で、Append a random signature from feed: のチェックが勝手に外れてしまうことがあるようです。出力されないと思ったら設定を再度見直してみてください。
それでは楽しい WordPress ライフ、もとい random signature ライフを!
追記:2009年02月17日(火)投稿から約5分後w
Twitter で、クイズ研 の中の人から、クイズ研API を教えていただきました。random signature でクイズが配信されてます。また、google 側の制限として、タイトル 96 文字以内、 item は 10 個まで、らしいと教えていただきました!ありがとうございます!>twk さん
- Comments: 0
- Trackbacks: 0
[WPPH01]新しいフィルタフックw next_posts_link_attributes / previous_posts_link_attributes
- 2009-02-14 (土)
- WP Plugin Hacks | wordpress
WordPress が過日2.7にバージョンアップして(今は既に2.7.1になっている)、当サイトを含め手持ちのサイトもバージョンアップしたのですが、コアファイルに手を入れていた部分が飛んでしまったのを機に、アプリケーションフックで対応できるものをプラグイン化して対処してみようという試み。
今回のターゲットは、前後へのリンクのアトリビュートです。テーマ中で言うなら posts_nav_link タグ付近です。
通常のリンク、ヘッダやフッタやサイドバーに出したいリンクはテーマファイル中で編集すれば好きなアクセスキーをセットすることができますね。
<h1><a href="<?php echo get_option('home'); ?>/"><?php bloginfo('name'); ?></a></h1>
これは
<h1><a href="<?php echo get_option('home'); ?>accesskey="0" /"><?php bloginfo('name'); ?></a></h1>
のようにすれば簡単にアクセスキーを追加できます。
ただ、投稿(POST)の前後へのナビゲーションリンクは、通常下記のようになっていて、同様の手段ではセットすることができませんでした。
<div class="navigation">
<div class="alignleft"><?php next_posts_link(__('« Older Entries', 'kubrick')) ?></div>
<div class="alignright"><?php previous_posts_link(__('Newer Entries »', 'kubrick')) ?></div>
</div>
や、
<?php posts_nav_link(' | ', 'Newer', 'Older'); ?>
などがありますが、いずれもアンカー中のアトリビュートは指定できませんでした。
簡単な回避策として、バージョン 2.6 までは、wp-includes/link-template.php 中の function next_posts_link / previous_posts_link を、下記のように修正することで対応していました。
function next_posts_link($label='Next Page »', $max_page=0) {
global $paged, $wp_query;
if ( !$max_page ) {
$max_page = $wp_query->max_num_pages;
}
if ( !$paged )
$paged = 1;
$nextpage = intval($paged) + 1;
if ( (! is_single()) && (empty($paged) || $nextpage <= $max_page) ) {
echo '<a href="';
next_posts($max_page);
echo '">'. preg_replace('/&([^#])(?![a-z]{1,8};)/', '&$1', $label) .'</a>';
}
}
を、
function next_posts_link($label='Next Page »', $max_page=0) {
global $paged, $wp_query;
if ( !$max_page ) {
$max_page = $wp_query->max_num_pages;
}
if ( !$paged )
$paged = 1;
$nextpage = intval($paged) + 1;
if ( (! is_single()) && (empty($paged) || $nextpage <= $max_page) ) {
echo '<a href="';
next_posts($max_page);
echo '" accesskey="6">'. preg_replace('/&([^#])(?![a-z]{1,8};)/', '&$1', $label) .'</a>';
}
}
このように修正していた。
これで問題なく携帯対応として(directkeyを指定しないの?とかそういうつっこみは抜きにして)問題なかったのですが、今回の 2.7 へのバージョンアップで、link-template.php に大幅な加筆変更が加えられたため、同じ対処をやめることにしました。
実は 2.7 へのバージョンアップにおいて、function get_next_posts_link / get_previous_posts_link が新しくなり、リンク生成時のアトリビュートを取得するためのアプリケーションフック(フィルター) next_posts_link_attributes / previous_posts_link_attributes が追加されました。
これにより、前述のようにコアファイルに手を加えなくてもフックでアトリビュートを追加できるようになったのです。
というわけで早速(遅い?w)プラグイン化してみました。
<?php
/*
Plugin Name: set AccessKey on Next6/Prev4
Description: 前後の投稿へのリンクにアクセスキーをセットする
Version: 1.0
Author: Y.Nishimura
Author URI: http://officel.biz/
*/
function filter_setAccesskeyN6($content) {
return $content . " accesskey='6'";
}
function filter_setAccesskeyP4($content) {
return $content . " accesskey='4'";
}
add_filter('next_posts_link_attributes', 'filter_setAccesskeyN6');
add_filter('previous_posts_link_attributes', 'filter_setAccesskeyP4');
?>
set-accesskey-on-n6-p4.phpをダウンロードして、plugin ディレクトリにアップロード後、有効化するだけで前後のPOSTリンクに accesskey が追加されます。見てのとおり、国内の携帯電話向けに、次へのリンクは”6″を、前へのリンクは”4″になっています。
個人的に必要だから作ったので、変更や修正には対応できないかもしれないかわりに、自由に配布・改変・私有化していただいて結構です。(個別にメンテする時間が取れないだけとも言います。)当サイトをご紹介いただいても、いただかなくても問題ありません。好きに使ってください。この投稿が誰かの何かの役に立てば幸いです。
追伸:新設されたフックを見ている限り、いたるところに追加が行われているので、これをベースにしていろいろ出来そうです。例えば投稿タイトルを title 要素として埋めるとか。いや、面倒か。。。
- Comments: 0
- Trackbacks: 1
[WPCH vol.03] ウィジェットをハック。ウィジェットタイトルをちょっとおしゃれに。
- 2008-06-23 (月)
- WP Core Hacks | wordpress
ウィジェットって本当に便利ですよね。並べ替えも簡単だし、テーマを変更しても基本的にはそのまま引き継がれるし。
ただ、設定がタイトなので、タイトル部分を装飾するのがちょっと難しいのが残念なところです。
タイトルの背景画像は CSS で対応できますが、タイトルそのものを装飾するには限界があります。ウィジェットタイトルは設定時にタグを使わせてくれないからです。
今回は、このウィジェットタイトルを CSS で装飾しやすくするために、ほんの少しだけ、タグ(span要素)を許可してあげる、というコアハックです。
具体的には、wp-users.jp 日本の WordPress ユーザのためのハブサイト のウィジェットタイトルのように、タイトルを span 要素で囲むことで、きめ細かい装飾を可能にします。
ではさっそく。今回は wp-includes/widgets.php を修正します。
複数個所ありますが、全てやり方は同じで、strip_tags で、stripslashes($_POST['XXXXX-title'])を処理しているところを修正するだけです。
例:380行目付近 wp_widget_pages_control という function の中(他も多数同様)。 $newoptions['title'] = strip_tags(stripslashes($_POST['pages-title'])); これを $newoptions['title'] = strip_tags(stripslashes($_POST['pages-title']),'<span>'); このようにします。
処理的には、管理画面でウィジェットタイトルを変更したときあたりに呼ばれて、入力値($_POSTの値)をきれいにして、タグも消去、みたいなことをしているので、strip_tags の仕様に基づいて、span 要素を許可するようにした、ということです。
このようにすることで、CSS による装飾の幅が広がります。
HTMLとCSSの例:
<h2 class="widgettitle">monthly archive</h2>
の場合、管理画面で monthly <span>archive</span> と入力することで、
<h2 class="widgettitle">monthly <span>archive</span></h2>
のようになるので、
h2.widgettitle {
color:#fff;
}
このような CSS に、
h2.widgettitle span {
color:#000;
}
を追加することで、monthly は白、archive は黒、のようにできます。
あとは CSS の知識の話なので、それはまた別のお話。ということで。
- Comments: 1
- Trackbacks: 0
[WPCH vol.02] フィルターをハック。投稿内容を valid に保つには
- 2008-05-09 (金)
- WP Core Hacks | wordpress
WordPress の投稿画面は、TinyMCE などによりとても高度なエディタになっています。ただ、タグ入力を手打ちで出来る場合には、若干というか、かなりいただけない仕様があります。それが wpautop フィルターです。
wpautop フィルターは、投稿内容などを整形し、p 要素でマークアップしたり、改行を br 要素に置換するなど、ただのテキストを入力している分には(たぶん)便利なものですが、不用意に改行すると悲しいことになったり、ともかく、投稿内容をそのまま出してよ!という要求をあっさり無視してくれます。
そこで、このフィルターを処理しないようにするために、remove_filter ('the_content', 'wpautop');などを function.php に記述しておくことで対処可能、のはずだったのですが、なぜかWP2.5 日本語版でうまくいきません。未検証なのですが、どこかで何かが悪さをしていて、removeできないようです。このままでは valid かつクリーンなコードが書けない!
というわけで、根本的に処理を止めてしまえ、というわけで、wp-dir/wp-includes/default-filters.php をいじります。
// 110行目付近
add_filter('the_content', 'wpautop');
add_filter('the_excerpt', 'wpautop');
// 上記2つをコメントアウト
// add_filter('the_content', 'wpautop');
// add_filter('the_excerpt', 'wpautop');
これで投稿内容に wpautop フィルターがかからなくなり、投稿(と抜粋)に入力したテキストが、そのまま使われるようになります。当サイトのように、pre 要素などでコードを多く書くとか、タグは手打ち、と考えている人で、同じように remove filter がうまくいかない、という場合に試してみてください。
- Comments: 0
- Trackbacks: 0
ホーム > wordpress
- Search
- Feeds
- Meta