Cocoonフォーラム

サイト内検索
書き込みの前に以下の3点をご確認ください。
  1. 1つのトピックにつき1つの質問を書き込んでください
  2. 不具合・カスタマイズ対象ページのURLを提示高速化を無効にしてください
  3. 該当部分のキャプチャ・環境情報とともに書き込んでいただけると助かります

何を書き込んだら良いか分からない場合は、以下のテンプレートをコピペしてご利用ください。

不具合・カスタマイズ対象ページのURL:

相談内容:

不具合の発生手順:

解決のために試したこと:

※文字だけでは正しく伝わらない可能性があるため、スクショ画像の添付もお願いします。
※高速化設定をしている場合は無効にしてください。
環境情報:

※↑こちらに「Cocoon設定 → テーマ情報」にある「環境情報」を貼り付けてください。

環境情報の取得方法はこちら。
https://wp-cocoon.com/theme-report/
高速化設定を無効にするにはこちら。
https://wp-cocoon.com/theme-trouble/

フォーラム利用ガイドリンク

  1. フォーラムガイドライン
  2. よくある質問と答え(FAQ)
  3. サポート対象外のケース
  4. 原因不明の不具合用トラブルシューティング
  5. トピックにHTMLを貼り付ける方法(推奨ツール:notepad.pw
  6. 真っ白画面でのエラーメッセージの確認方法
  7. ブラウザ環境チェックツール
  8. Cocoonカスタマイズ依頼

フォーラム質問後、問題等が解決した場合は結果を書き込んでいただけると幸いです。同様の問題で調べている方には、結果が一番気になる部分となります。

内部ブログカードの抜粋文字数を指定した...
 
共有:
通知
すべてクリア

[解決済] 内部ブログカードの抜粋文字数を指定したい

12 投稿
2 ユーザー
0 Reactions
5,367 表示
 
(@ゆ)
Estimable Member
結合: 6年前
投稿: 136
トピックスターター  

こんにちは。

タイトル通りなのですが、そういったカスタマイズはできますでしょうか?

また最後は「...」と続くようにしたいです。


   
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 7年前
投稿: 17391
 

できるかできないかで言えば、url_to_internal_blogcard_tagとurl_to_external_ogp_blogcard_tagをPHPでカスタマイズすればできるかと思います。


   
 
(@ゆ)
Estimable Member
結合: 6年前
投稿: 136
トピックスターター  

回答ありがとうございます。

調べて試してみます。


   
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 7年前
投稿: 17391
 

以下の手順で行えば、カスタマイズ出来るかと思います。

  1. GitHubから最新版( https://github.com/yhira/cocoon )のファイルでテーマをアップデート
  2. 以下のコードをfunctions.phpに追記
//内部・外部ブログカードのスニペット部分の文字列制御
add_filter( 'cocoon_blogcard_snippet', function ($snippet){
  return mb_substr($snippet, 30);//文字数となる数字は好みで変更してください
} ); 

   
(@litoma)
Active Member
結合: 6年前
投稿: 11
 

わいひら様

ご無沙汰しております。
今更で恐縮ですが、Cocoon最新版の場合、上記のコードでは抜粋の開始位置が30文字目となってしまい、目的を満たせませんでした。
そこで、以下のように変更したところ一応動作しましたので、ご報告させていただきます。
もし誤りや懸念等ありましたらご指摘いただけると助かります。

//内部・外部ブログカードのスニペット部分の文字列制御 
add_filter('cocoon_blogcard_snippet', 'snippet_word_count');
function snippet_word_count($snippet) {
return get_content_excerpt($snippet, 30);
}

   
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 7年前
投稿: 17391
 

返り値直前の関数が違うようですが、mb_substrの方を利用してもダメだったのでしょうか?


   
(@litoma)
Active Member
結合: 6年前
投稿: 11
 

わいひら様

ご返信ありがとうございます。また、直接の変更箇所が分かりづらく申し訳ありません。
mb_substrではうまくいかず、get_content_excerptで目的の動作となりました。

プログラミング素人なので原因は不明ですが、mb_substrの場合、
冒頭から指定した文字数分が抜粋されませんでした。
当方の環境依存でしょうか…。


   
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 7年前
投稿: 17391
 

よくよく関数を確認してみたら、mb_substrは開始バイトと長さを指定する必要がありますね。
正確にはこんな感じかと思います。

//内部・外部ブログカードのスニペット部分の文字列制御
add_filter( 'cocoon_blogcard_snippet', function ($snippet){
return mb_substr($snippet, 0, 30);//文字数となる数字は好みで変更してください
} );

僕のコードミスみたいです。


   
(@litoma)
Active Member
結合: 6年前
投稿: 11
 

わいひら様

ご返信ありがとうございます。

ご指示いただいたmb_substrのコードを試したところ、先頭から指定の文字数は抜粋されまるようになりましたが、末尾に「…」が付かなくなってしまいました。

そこまで細かくこだわる必要はないのかもですが、個人的には「…」を表示したいと思い、特に問題なければget_content_excerptを使いたいと思います。

よろしくお願いいたします。


   
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 7年前
投稿: 17391
 

普通に末尾に文字列で「…」を付ければよいのではないでしょうか。


   
(@litoma)
Active Member
結合: 6年前
投稿: 11
 

わいひら様

すみません。「普通に〜」と仰るのは、関数でという意味でしょうか。それともCSSでしょうか。
どちらでも実現できるとは思いますが、私としては単純にmb_substrだけでは「…」が付かないことをご報告させていただきました。

目的の実現方法は分かりましたので、これ以上の発言は控えます。
サポートいただき、ありがとうございました。


   
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 7年前
投稿: 17391
 

こういうことです。

//内部・外部ブログカードのスニペット部分の文字列制御
add_filter( 'cocoon_blogcard_snippet', function ($snippet){
return mb_substr($snippet, 0, 30).'…';//文字数となる数字は好みで変更してください
} );

最初の書き込みでコードを書き換えておられたので、PHP編集ができるものと思っておりました。


   
共有:

問題の解決に至った場合には、トピック冒頭の「解決済み」をクリックしていただけますと幸いです。

また、有用な回答があった場合は返信右下にある「いいね!」もご活用ください。回答者の励みになります。

「いいね!」機能はフォーラム登録者のみが利用できる機能です。

CC BY-ND 2.1)準じていれば(リンクを貼っていただければ)転載も自由です。カスタマイズ記事を書く際にコード等をコピペ利用していただいて構いません。

フォーラムの使い方がよくわからない場合は、テストトピックで自由にテストしていただいて構いません。

最近の書き込みはこちら。

詳細なカスタマイズ依頼をするならこちら。

タイトルとURLをコピーしました