初めてコンテンツの多い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を使用する方法に関するガイドをご覧ください。
コードが追加されると、投稿タイトルは設定した文字数に切り捨てられます。
この記事がWordPress投稿タイトルをPHPで切り取る方法を学ぶのに役立ったことを願っています。また、優れたブログ投稿の書き方に関するガイドや、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
ジュナイド
素晴らしい!クライアントのプロジェクトを探していました。
マルコ
previous_post_link(); のリンクタイトルを切り詰める方法を知っている人はいますか?
ありがとう
ブラウ
ありがとうございます、完璧に機能しました!これを実行するためだけにプラグインを使いたくなかったので、あなたのコードでタイトルを適切に短縮できて満足しています。
再度ありがとうございます!
ジョーイ・フィガロ
こんにちは。これをまとめてくれてありがとうございます!たまたま、これを実現する別の例を見つけたのですが、それはずっと簡単そうだったので、皆さんに共有して、どう思うか見てみたいと思います。
functions.php:
function new_excerpt_length($length) { return 100; } add_filter(‘excerpt_length’, ‘new_excerpt_length’);
編集スタッフ
これらは全く異なる2つの概念です。あなたが推奨しているのは投稿の抜粋用ですが、私たちが話しているのは投稿のタイトル用です。
管理者
ジョーイ・フィガロ
Wow, that’s embarrassing.
レナ
こんにちは!
これは英語以外の言語を使用すると機能しません。デフォルトのコードと比較して、コードがå ä öを翻訳しないため、私のスウェーデン語のタイトルはひどい見た目です。どうすればよいか何か提案はありますか?これは良いトリックなので、使いたいです。
Lillanより
編集スタッフ
うーん…それは深刻な問題のようですね。英語ではなく、PHPで言語を指定できるかどうか疑問に思っています。
管理者
アレックス
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
ベン・クルバート
トラックバックありがとうございます!
編集スタッフ
We appreciate your work for the community. Thanks for the nice snippet
管理者
ナヴジョート・シン
1つの提案ですが、この種のコードはindex.phpではなくfunctions.phpに含めるべきです。条件付きタグを使用して、ホームページやその他の任意のページにコードを制限できます。
編集スタッフ
これは特定の領域のためだけです…しかし、はい、カスタマイズしてfunctions.phpに配置できます。
管理者
トーマス・ショルツ
strlen() は使用しないでください。mb_strlen() または strlen(utf8_decode($str)) を使用してください。マルチバイト文字内で文字列が切り捨てられるリスクがあります。mb_substr() も同様です。
Oh, and an ellipsis is one character: …
スニップスリー
ありがとうございます!! mb_strlen()とmb_substrでエンコーディングの問題が解決しました。何時間も探していました!
レナ・バクシュテット
BIG tnx!
mb_strlen() も、スウェーデン語でも(今のところ見るところ)機能するようです