サポート » 使い方全般 » タイトルを途中で改行したい

  • WordPress挑戦中の初心者です。

    トップページにテーブルを配置しそこに記事のタイトルと写真を6件表示しているのですが、
    タイトルが中途半端に下の行に表示されてしまいます。
    タイトルは必ず下のように途中で空白が一つ入っているようにしているのですが、
    タイトル1111111111 2222222222222
    それで、1行目に空白までのタイトルを表示(タイトル1111111111)、
    2行目に空白以降のタイトルを表示(2222222222)したいのです。
    オーバーした部分は切れてもかまいません。

    なにかいい方法ありますでしょうか?出来ましたら具体的にお願いします。

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • もう少し具体的に詳しくお願いします。

    そのテーブルはテーマに直接書いているのか、投稿記事で投稿するのか、
    ページでタグを書いているのか、はたまた1件の写真を投稿すれば自動で入りこむような
    テンプレートにしているのか、ちょっと想像がつきかねます。
    超簡単に、<br />でダメなの?とか思ってしまいました。

    トピック投稿者 matcha

    (@matcha)

    で改行できるのですが、ブログを表示しているページも改行してしまうので、
    トップページのみ改行してブログページはそのまま改行しないで表示したいのです。

    テーブルはテーマにかいてます。

    テーブルはテーマに直接かいています。

    トピック投稿者 matcha

    (@matcha)

    投稿記事のタイトルに<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;
    ?>
8件の返信を表示中 - 1 - 8件目 (全8件中)
  • トピック「タイトルを途中で改行したい」には新たに返信することはできません。