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カスタマイズ依頼

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

シェアボタンで書き込まれる内容を変更し...
 
共有:
通知
すべてクリア

[解決済] シェアボタンで書き込まれる内容を変更したい

7 投稿
2 ユーザー
2 Reactions
184 表示
(@base556)
Eminent Member Registered
結合: 1年前
投稿: 16
トピックスターター  

投稿画面のシェアボタン(Xの場合)を押すと、タイトルとURLが書きこまれる対象になるかと思いますが、これにスニペットや文字の追加は可能でしょうか?

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



   
大門未知子
(@chu-ya)
Illustrious Member Registered
結合: 4年前
投稿: 3871
 

投稿者:: @base556

これにスニペットや文字の追加は可能でしょうか?

●回答

可能です。
PHPでの対応となるので、自己責任、ご自身の力量の範囲でお願いします。

以下の関数get_twitter_share_urlを、子テーマにコピーします。

https://github.com/xserver-inc/cocoon/blob/e8c3d045a5eccb19bcaaab3e33a7c850eaf0fbfd/lib/sns-share.php#L491-L500

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
(@base556)
Eminent Member Registered
結合: 1年前
投稿: 16
トピックスターター  

こちらの方法で内容の変更できました。ありがとうございます。

スニペットですが本文では<!--more-->を使って表示部分を制限しています。

そのためエントリーカードなどで表示されているテキストをそのまま表示したいと思っていますが可能でしょうか?

こちらを試したところ、<!--more-->以下のテキストも取得してしまいました。

. urlencode(get_the_snippet(get_the_content(), 50))

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



   
(@base556)
Eminent Member Registered
結合: 1年前
投稿: 16
トピックスターター  

また、改行はできないでしょうか?こちらを試してみましたができませんでした。

.urlencode("\n")


   
大門未知子
(@chu-ya)
Illustrious Member Registered
結合: 4年前
投稿: 3871
 

@base556 さん

2022年にWordPressに触れるまで、私自身、PHPについて全く知りませんでした。
このフォーラムの質問に対し、回答することで、知識を身に付けました。

カスタマイズ、問題がある場合、ご自身で調べる癖をつけましょう。
見よう見まねでなく、「なぜ?」と疑問を持ち、調べることが大切だと思います。

いい勉強になったので、特別に回答します(笑)

●moreについて

現象

前述のコードで、以下のエントリーカードと同じコードを反映しました。

https://github.com/xserver-inc/cocoon/blob/e8c3d045a5eccb19bcaaab3e33a7c850eaf0fbfd/tmp/entry-card.php#L45

同じ 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
           . '&amp;url=' . urlencode( get_share_page_url() )
           . get_twitter_via_param()
           . get_twitter_related_param();
}

または、関数get_the_meta_description()を使用する方法もあります。
この場合、エントリーカードのスニペットとは異なり、最大文字数は120文字になります。

https://github.com/xserver-inc/cocoon/blob/e8c3d045a5eccb19bcaaab3e33a7c850eaf0fbfd/lib/seo.php#L665-L697


●改行について

原因

sns-share-buttons.phpでSNS シェアボタンを出力する際、get_twitter_share_url()内で追加した改行コードは、esc_url()によって自動的に除去されてしまいます。
そのため、ツイートURLに改行を含めたい場合は、esc_url()を使用せずにURLを生成する必要があります。

https://github.com/xserver-inc/cocoon/blob/e8c3d045a5eccb19bcaaab3e33a7c850eaf0fbfd/tmp/sns-share-buttons.php#L17

対策

  • sns-share-buttons.php を子テーマの tmp にコピーする
  • ツイート URL を生成する箇所で esc_url() を削除する

これにより、get_twitter_share_url()内で追加した改行コードを保持したままSNSシェアボタンを出力できます。



   
わいひら reacted
(@base556)
Eminent Member Registered
結合: 1年前
投稿: 16
トピックスターター  

ありがとうございます。大変勉強になりました。



   
大門未知子
(@chu-ya)
Illustrious Member Registered
結合: 4年前
投稿: 3871
 

@base556 さん

解決したなら、マナーとして「解決」ボタンを押してください。



   
共有:

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

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

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

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

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

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

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

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