もう少し具体的に詳しくお願いします。
そのテーブルはテーマに直接書いているのか、投稿記事で投稿するのか、
ページでタグを書いているのか、はたまた1件の写真を投稿すれば自動で入りこむような
テンプレートにしているのか、ちょっと想像がつきかねます。
超簡単に、<br />
でダメなの?とか思ってしまいました。
で改行できるのですが、ブログを表示しているページも改行してしまうので、
トップページのみ改行してブログページはそのまま改行しないで表示したいのです。
テーブルはテーマにかいてます。
テーブルはテーマに直接かいています。
投稿記事のタイトルに<br />を直接いれると、改行するのですが、
ブログページも改行してしまうので、そちらのページは改行せず一行で表示したいのです。
逆でもいいのです。ブログページのタイトルを表示するときに<br />を削除して
表示できれば、それでもいいです。
それではhome.phpファイルを作成し今のindex.phpの中身をまるごとコピーし、home.phpには<br />
を入れる、index.phpには入れないという風に作り分けしてみてはどうでしょう?
詳しくはテンプレート階層を見てみてください。
ホームのときは、正規表現でタイトル部分の空白を
に置き換えるようにすればいいと思います。
トップページだけに<br />
を記述する条件分岐ではダメですか?
<?php if (is_home()): ?><br /><?php endif; ?>
matchaさんのやりたいことだと、それだけじゃ無理じゃないですかね?
1111111111 2222222222222
というタイトルのときに、自動的に空白位置で改行したいということですから。
正規表現じゃなくても、アレですね。あきらかに空白が1個ならば、$titleにタイトルを代入しているとして
<?php if (is_home()): ?>
$res = str_replace(‘ ‘,’
‘, $title)
print $res;
<?php endif; ?>
とかでもいいかもですね。
お邪魔します。テーブル内のタイトルは、どのように出力していますか?
もし the_title(); で出力しているのであれば、こういう感じでどうでしょうか?
<?php
function filter_explode_title_by_space( $title=null ) {
if ( empty($title) ) return;
$title = mb_convert_kana( $title, 's' );
if ( preg_match("/^(\S*)\s+?(.*)$/i", $title, $matches) ) {
$title = $matches[1] . '<br />' . $matches[2];
}
return $title;
}
if ( is_home() ) {
add_filter( 'the_title', 'filter_explode_title_by_space' );
}
?>
お使いのテーマの functions.php にコードを貼り付けて動作を確認してみてください。
懸念する点としては、トップページにこの体裁以外で the_title(); を使用している場合にも一律で、最初の空白を <br />
にするようになってしまうことで、その場合は、上記コードの
if ( is_home() ) {
add_filter( 'the_title', 'filter_explode_title_by_space' );
}
の部分については functions.php へ貼り付けず、テーブルのセルを出力している WordPress ループの while 文を add_filter() と remove_filter() で挟むことで対応します。
<?php
if ( have_posts() ) :
?>
<table summary="">
<tr>
<?php
add_filter( 'the_title', 'filter_explode_title_by_space' );
while ( have_posts() ) :
the_post();
?>
<td>...</td>
<?php
endwhile;
remove_filter( 'the_title', 'filter_explode_title_by_space' );
?>
</tr>
</table>
<?php
endif;
?>