サイト内検索
Cocoonフォーラム

書き込みの前に以下の3点をご確認ください。
何を書き込んだら良いか分からない場合は、以下のテンプレートをコピペしてご利用ください。
不具合・カスタマイズ対象ページのURL:
相談内容:
不具合の発生手順:
解決のために試したこと:
※文字だけでは正しく伝わらない可能性があるため、スクショ画像の添付もお願いします。
※高速化設定をしている場合は無効にしてください。
環境情報:※↑こちらに「Cocoon設定 → テーマ情報」にある「環境情報」を貼り付けてください。
環境情報の取得方法はこちら。
→ https://wp-cocoon.com/theme-report/
高速化設定を無効にするにはこちら。
→ https://wp-cocoon.com/theme-trouble/
フォーラム利用ガイドリンク
- フォーラムガイドライン
- よくある質問と答え(FAQ)
- サポート対象外のケース
- 原因不明の不具合用トラブルシューティング
- トピックにHTMLを貼り付ける方法(推奨ツール:notepad.pw)
- 真っ白画面でのエラーメッセージの確認方法
- ブラウザ環境チェックツール
- Cocoonカスタマイズ依頼
フォーラム質問後、問題等が解決した場合は結果を書き込んでいただけると幸いです。同様の問題で調べている方には、結果が一番気になる部分となります。
トピックスターター 2025年10月1日 16:21
投稿画面のシェアボタン(Xの場合)を押すと、タイトルとURLが書きこまれる対象になるかと思いますが、これにスニペットや文字の追加は可能でしょうか?
よろしくお願いいたします。
2025年10月1日 17:38
これにスニペットや文字の追加は可能でしょうか?
●回答
可能です。
PHPでの対応となるので、自己責任、ご自身の力量の範囲でお願いします。
以下の関数get_twitter_share_urlを、子テーマにコピーします。
X(tweet?text=)に任意の文字列を追加します。
その際、urlencodeを使用し、必ず文字列をURLエンコードしてください。
例えば、スニペットを50文字取得し、タイトルの後ろに追加します。
return 'https://x.com/intent/tweet?text='.urlencode( get_share_page_title() ). urlencode(get_the_snippet(get_the_content(), 50)) . $hash_tag.'&url='.
わいひら reacted
トピックスターター 2025年10月2日 13:07
こちらの方法で内容の変更できました。ありがとうございます。
スニペットですが本文では<!--more-->を使って表示部分を制限しています。
そのためエントリーカードなどで表示されているテキストをそのまま表示したいと思っていますが可能でしょうか?
こちらを試したところ、<!--more-->以下のテキストも取得してしまいました。
. urlencode(get_the_snippet(get_the_content(), 50))
よろしくお願いいたします。
トピックスターター 2025年10月2日 13:46
また、改行はできないでしょうか?こちらを試してみましたができませんでした。
.urlencode("\n")
2025年10月2日 15:30
@base556 さん
2022年にWordPressに触れるまで、私自身、PHPについて全く知りませんでした。
このフォーラムの質問に対し、回答することで、知識を身に付けました。
カスタマイズ、問題がある場合、ご自身で調べる癖をつけましょう。
見よう見まねでなく、「なぜ?」と疑問を持ち、調べることが大切だと思います。
いい勉強になったので、特別に回答します(笑)
●moreについて
現象
前述のコードで、以下のエントリーカードと同じコードを反映しました。
同じ get_the_content() 本文を取得しているにもかかわらず、投稿ページではmore以降の本文も取得されてしまう 現象が発生しました。
原因
WordPress の仕様で、global $moreによってget_the_content() の動作が変わるためです。
- メインループなどの場合、$more=0 となり、more 前の本文のみ取得される
- 投稿ページの場合、$more = 1 となり、more 以降の本文も取得される
対策
一時的に $more=0として本文を取得し、その後元に戻します。
function get_twitter_share_url() { $post_id = get_the_ID(); $hash_tag = ''; if (get_twitter_hash_tag()) { $hash_tag = '+' . urlencode(get_twitter_hash_tag()); } global $more; $old_more = $more; $more = 0; $snippet = get_the_snippet( get_the_content(''), get_entry_card_excerpt_max_length() ); $more = $old_more; return 'https://x.com/intent/tweet?text=' . urlencode( get_share_page_title() . "\n" . $snippet ) . $hash_tag . '&url=' . urlencode( get_share_page_url() ) . get_twitter_via_param() . get_twitter_related_param(); }
または、関数get_the_meta_description()を使用する方法もあります。
この場合、エントリーカードのスニペットとは異なり、最大文字数は120文字になります。
●改行について
原因
sns-share-buttons.phpでSNS シェアボタンを出力する際、get_twitter_share_url()内で追加した改行コードは、esc_url()によって自動的に除去されてしまいます。
そのため、ツイートURLに改行を含めたい場合は、esc_url()を使用せずにURLを生成する必要があります。
対策
- sns-share-buttons.php を子テーマの tmp にコピーする
- ツイート URL を生成する箇所で esc_url() を削除する
これにより、get_twitter_share_url()内で追加した改行コードを保持したままSNSシェアボタンを出力できます。
わいひら reacted
トピックスターター 2025年10月3日 14:06
ありがとうございます。大変勉強になりました。
問題の解決に至った場合には、トピック冒頭の「解決済み」をクリックしていただけますと幸いです。
また、有用な回答があった場合は返信右下にある「いいね!」もご活用ください。回答者の励みになります。
(CC BY-ND 2.1)準じていれば(リンクを貼っていただければ)転載も自由です。カスタマイズ記事を書く際にコード等をコピペ利用していただいて構いません。
フォーラムの使い方がよくわからない場合は、テストトピックで自由にテストしていただいて構いません。
最近の書き込みはこちら。
詳細なカスタマイズ依頼をするならこちら。