初めてコンテンツの多いWordPressサイトを立ち上げたとき、ブログ記事のタイトルが問題になるとは思ってもいませんでした。長いタイトルのいくつかは美しいレイアウトを壊し、他のいくつかはモバイルデバイスで見栄えが悪く見えました。
複数のWordPressサイトを管理し、ウェブサイトの所有者を支援してきた長年の経験から、投稿タイトルを短縮することで、視聴者の注意を引きつける、一貫性のある洗練された外観を確保できることがわかりました。
このガイドでは、PHPを使用してWordPressブログのタイトルを自動的に短縮する効果的なテクニックを共有し、すべてをシャープに見せるのに役立ちます。

なぜPHPでWordPressの投稿タイトルを切り詰めるのか?
PHPを使用してWordPressで投稿タイトルを切り詰めることで、投稿タイトルの長さとウェブサイトでの表示方法をより細かく制御できます。
例えば、ホームページで長い投稿タイトルを切り取って、WordPressブログのデザインを崩さないようにしたい場合があります。

そうすることで、ブログを視覚的に美しく、読者にとってナビゲートしやすい状態に保つことができます。
注意: 短いタイトルを使用してブログ投稿をSEO向けに最適化することが目的の場合、抜粋は必要ないかもしれません。代わりに、WordPress SEOプラグインを使用すると、短く効果的なSEOタイトルタグの作成が簡単になります。
サイトでは長い投稿タイトルを訪問者向けに維持しながら、検索結果ページのカスタムSEOタイトルを作成できるため、All in One SEO(AIOSEO)をお勧めします。
詳細については、AIOSEOを正しく設定する方法に関する究極のガイドをご覧ください。
さて、PHPを使用してサイトでWordPressの投稿タイトルを切り詰める2つの方法を見ていきましょう。
方法1:WordPress関数でWordPress投稿タイトルを切り詰める
WordPressでWordPressの投稿タイトルを切り詰める最も簡単な方法は、WordPressファイルにPHPコードを追加することです。これを以前に行ったことがない場合は、WordPressでコードをコピー&ペーストする方法に関するガイドをご覧ください。
多くのチュートリアルでは、コードをテーマのfunctions.phpファイルに直接追加するように指示しています。しかし、間違いがあるとエラーが発生したり、サイトが破損したりする可能性があります。
そのため、代わりに無料のWPCodeプラグインを使用することをお勧めします。これは、テーマファイルを直接変更することなく、WordPressサイトにカスタムコードを追加および管理するのに便利なツールです。
WPBeginnerでは、カスタムコードスニペットを追加および管理するためにこのプラグインを利用しています。詳細については、WPCodeの完全レビューをご覧ください。
まず、WPCode無料プラグインをインストールして有効化する必要があります。これに役立つ場合は、WordPressプラグインのインストール方法に関するステップバイステップガイドをご覧ください。
アクティベートしたら、管理サイドバーから Code Snippets » + Add Snippet を選択します。次に、「カスタムコードを追加(新規スニペット)」オプションにマウスカーソルを合わせ、「カスタムスニペットを追加」ボタンをクリックします。

これにより新しいページが開かれ、スニペットのタイトルを入力してからコードを追加できます。
以下のコードをWPCodeのコードプレビューペインにコピー&ペーストするだけです。
function max_title_length( $title ) {
$max = 35;
if( strlen( $title ) > $max ) {
return substr( $title, 0, $max ). " …";
} else {
return $title;
}
}
add_filter( 'the_title', 'max_title_length');
コードを追加すると、このようになります。

このコードはWordPressの投稿ループ内で実行され、ブログ投稿タイトルを35文字に短縮します。タイトルの長さを変更するには、$max変数を希望のタイトル長に設定するだけです。
ヘルプが必要な場合は、WordPressにカスタムコードを追加する方法に関する記事をご覧ください。
次に、コードタイプのドロップダウンメニューから「PHPスニペット」を選択する必要があります。
最後に、アクティブ設定をオンに切り替え、[スニペットを保存]ボタンをクリックしてスニペットを保存する必要があります。

コードスニペットが有効になったので、ブログの投稿タイトルは、WordPressウェブサイトのどこに表示されても短縮されます。
下のスクリーンショットに示すように、タイトルは35文字で停止し、末尾に省略記号「…」が続きます。

方法2:WordPressテーマファイルを変更してPHPでWordPress投稿タイトルを切り詰める
WordPressの投稿タイトルを切り詰める別の方法は、WordPressテーマファイルに直接コードを追加することです。
この方法により、タイトルの短縮箇所をより細かく制御できます。例えば、ホームページでのみタイトルを切り詰め、ブログ記事ではフルレングスのタイトルを表示したい場合があります。
⚠️ プロのヒント: 手順2に進む前に、テーマを更新するとカスタムの変更が上書きされる可能性があることを忘れないでください。
カスタマイズを失うことなくサイトを最新の状態に保つには、WordPressテーマのカスタマイズを失わずに更新する方法に関するガイドをご覧ください。
これを行うには、ブログ記事のタイトルを切り詰めたい場所にPHPコードを直接WordPressのテーマファイルに追加する必要があります。
例えば、以下のコードスニペットを index.php ファイルに追加することで、WordPressの投稿ループ内の既存の the_title タグを置き換え、サイト全体のタイトル長を変更できます。
<a href="<?php the_permalink() ?>">
<?php
$thetitle = $post->post_title; /* or you can use get_the_title() */
$getlength = strlen($thetitle);
$thelength = 25;
echo substr($thetitle, 0, $thelength);
if ($getlength > $thelength) echo "...";
?>
</a>
このコードは、投稿タイトルの長さを25文字に設定します。タイトルの長さが25文字より長い場合、25文字で切り取られ、末尾に省略記号「…」が追加されます。
ウェブサイトの文字数を変更するには、$thelength変数を希望の文字数に変更するだけです。
コードを追加してファイルを保存したら、WordPressホスティングアカウントのテーマディレクトリにアップロードする必要があります。
FTPクライアントまたはWordPressホスティングコントロールパネルのファイルマネージャーツールを使用してこれを行うことができます。FTPを初めて使用する場合は、WordPressにファイルをアップロードするためにFTPを使用する方法に関するガイドをご覧ください。
コードが追加されると、投稿タイトルは設定した文字数に切り捨てられます。
この記事がPHPでWordPressの投稿タイトルを切り詰める方法を学ぶのに役立ったことを願っています。また、素晴らしいブログ記事の書き方に関するガイドや、WordPress向けの最高のコンテンツマーケティングツールとプラグインの専門家による選び方もご覧ください。
この記事が気に入ったら、WordPressのビデオチュートリアルについては、YouTubeチャンネルを購読してください。 TwitterやFacebookでもフォローできます。


kzain
長いタイトルを整理するのに最適なソリューションです!
特にキャッチーな見出しの場合、手に負えなくなることがあります。このカスタム関数は実装が簡単そうですが、PHPの部分は友人に手伝ってもらう必要があるかもしれません。
アチンタ
こんにちは、単語数を制限するためのWordPress関数があります。それを使用する方が良いでしょう。
http://codex.wordpress.org/Function_Reference/wp_trim_words
dustinporchia
これは素晴らしいです!… wpbeginnerさん、ありがとうございます!
adm_mnz
mb_substrを使用する場合、エンコーディングのパラメータがあります。
http://php.net/manual/en/function.mb-substr.php
Junaid
素晴らしい!クライアントのプロジェクトを探していました。
Marco
previous_post_link(); のリンクタイトルを切り詰める方法を知っている人はいますか?
ありがとう
ブラウ
ありがとうございます、完璧に機能しました!これを実行するためだけにプラグインを使いたくなかったので、あなたのコードでタイトルを適切に短縮できて満足しています。
再度ありがとうございます!
Joey Figaro
こんにちは。これをまとめてくれてありがとうございます!たまたま、これを実現する別の例を見つけたのですが、それはずっと簡単そうだったので、皆さんに共有して、どう思うか見てみたいと思います。
functions.php:
function new_excerpt_length($length) { return 100; } add_filter(‘excerpt_length’, ‘new_excerpt_length’);
編集スタッフ
これらは全く異なる2つの概念です。あなたが推奨しているのは投稿の抜粋用ですが、私たちが話しているのは投稿のタイトル用です。
管理者
Joey Figaro
Wow, that’s embarrassing.
Lena
こんにちは!
これは英語以外の言語を使用すると機能しません。デフォルトのコードと比較して、コードがå ä öを翻訳しないため、私のスウェーデン語のタイトルはひどい見た目です。どうすればよいか何か提案はありますか?これは良いトリックなので、使いたいです。
Lillanより
編集スタッフ
うーん…それは深刻な問題のようですね。英語ではなく、PHPで言語を指定できるかどうか疑問に思っています。
管理者
Alex
You might wanna try to specify a different charset, check Latin1 or utf8 i think they contain those chars as well.. I had some similar issues recently since my first language is german
編集スタッフ
Thank you for helping out Alex
Ben Kulbertis
トラックバックありがとうございます!
編集スタッフ
We appreciate your work for the community. Thanks for the nice snippet
管理者
ナヴジョート・シン
1つの提案ですが、この種のコードはindex.phpではなくfunctions.phpに含めるべきです。条件付きタグを使用して、ホームページやその他の任意のページにコードを制限できます。
編集スタッフ
これは特定の領域のためだけです…しかし、はい、カスタマイズしてfunctions.phpに配置できます。
管理者
Thomas Scholz
strlen() は使用しないでください。mb_strlen() または strlen(utf8_decode($str)) を使用してください。マルチバイト文字内で文字列が切り捨てられるリスクがあります。mb_substr() も同様です。
Oh, and an ellipsis is one character: …
snipsley
ありがとうございます!! mb_strlen()とmb_substrでエンコーディングの問題が解決しました。何時間も探していました!
Lena Backstedt
BIG tnx!
mb_strlen() も、スウェーデン語でも(今のところ見るところ)機能するようです