サイト内検索
Cocoonフォーラム
書き込みの前に以下の3点をご確認ください。
何を書き込んだら良いか分からない場合は、以下のテンプレートをコピペしてご利用ください。
不具合・カスタマイズ対象ページのURL:
相談内容:
不具合の発生手順:
解決のために試したこと:
※文字だけでは正しく伝わらない可能性があるため、スクショ画像の添付もお願いします。
※高速化設定をしている場合は無効にしてください。
環境情報:※↑こちらに「Cocoon設定 → テーマ情報」にある「環境情報」を貼り付けてください。
環境情報の取得方法はこちら。
→ https://wp-cocoon.com/theme-report/
高速化設定を無効にするにはこちら。
→ https://wp-cocoon.com/theme-trouble/
フォーラム利用ガイドリンク
- フォーラムガイドライン
- よくある質問と答え(FAQ)
- サポート対象外のケース
- 原因不明の不具合用トラブルシューティング
- トピックにHTMLを貼り付ける方法(推奨ツール:notepad.pw)
- 真っ白画面でのエラーメッセージの確認方法
- ブラウザ環境チェックツール
- Cocoonカスタマイズ依頼
フォーラム質問後、問題等が解決した場合は結果を書き込んでいただけると幸いです。同様の問題で調べている方には、結果が一番気になる部分となります。
Topic starter
2024年9月30日 07:12
お世話になります。
すばらしいテーマ Cocoonを長年利用させていただいてます。
以下の問題で知恵を拝借できれば幸いです。
https://www.amamoba.com/pc/iphone-net-kyouyu3.html?amp
https://www.amamoba.com/pc/iphone-net-kyouyu3.html?amp=1
上記のページを見れば分かる通り、Ampの生成がOFFなのに ?amp=1 や ?amp ページが生成され続けています。古いCocoonでAMPをオフに、新しいバージョンのCocoonしたかどうかは、記憶にありません。
質問1:AMPページを生成されないようにするにはどうすればいいですか?
質問2: ?amp=1 と ?amp ページ を正規のページにリダイレクトするのは、.htaccsess にどのように記載すればよいでしょうか?
なお、AMPのプラグインは使っておりません。
以下に環境を記します。
----------------------------------------------
サイト名:Webと人のアマモ場
サイトURL: https://www.amamoba.com
ホームURL: https://www.amamoba.com
コンテンツURL:/wp-content
インクルードURL:/wp-includes/
テンプレートURL:/wp-content/themes/cocoon-master
スタイルシートURL:/wp-content/themes/cocoon-child-master
親テーマスタイル:/wp-content/themes/cocoon-master/style.css
子テーマスタイル:/wp-content/themes/cocoon-child-master/style.css
WordPressバージョン:6.6.2
PHPバージョン:8.1.27
ブラウザ:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36
サーバーソフト:Apache
サーバープロトコル:HTTP/1.0
エンコーディング:none
言語:ja,en-US;q=0.9,en;q=0.8
----------------------------------------------
テーマ名:Cocoon
バージョン:2.7.7.4
カテゴリー数:27
タグ数:3
ユーザー数:1
----------------------------------------------
子テーマ名:Cocoon Child
バージョン:0.0.3
style.cssサイズ:10802 バイト
functions.phpサイズ:9284 バイト
----------------------------------------------
Gutenberg:1
Font Awesome:4
Auto Post Thumbnail:0
Retina:0
ホームイメージ:/wp-content/uploads/2018/04/2018-04-11_13h49_16.png
----------------------------------------------
ブラウザキャッシュ有効化:1
HTML縮小化:0
CSS縮小化:0
JavaScript縮小化:0
Lazy Load:1
----------------------------------------------
利用中のプラグイン:
Akismet Anti-spam: Spam Protection 5.3.3
Broken Link Checker 2.4.0
ConoHa WING コントロールパネルプラグイン 1.0
ConoHa WING 自動キャッシュクリア 1.0.0
EWWW Image Optimizer 7.9.0
Google Authenticator 0.54
Jetpack 13.8.1
Nested Shortcodes by Outerbridge 1.4
PuSHPress 0.1.10
Redirection 5.5.0
Search Regex 3.1.0
Simple Post Notes 1.7.8
SiteGuard WP Plugin 1.7.8
Solid Security Basic 9.3.3
The Moneytizer 10.0.4
TinyMCE Templates 4.8.1
Virtual Robots.txt 1.10
Wordfence Security 7.11.7
WP-Optimize - Clean, Compress, Cache 3.6.0
WP Multibyte Patch 2.9
XML Sitemap Generator for Google 2.0.7
Yoast Duplicate Post 4.5
Zapier for WordPress 1.5.1
----------------------------------------------
2024年9月30日 17:30
t.dorikameさん
上記は、通常ページ(非AMP)かと思います。
ソースを見ても、通常ページに見えます。
AMPテストをしても、同様です。
わいひら reacted
2024年9月30日 17:31
上記は、確かにAMPページが作成されている感じがします。
但し、エラーがあるため無効状態のようです。
https://search.google.com/test/amp/result?id=x4QGYtQiXLNcKZJxXmn1ww
https://search.google.com/test/amp/result?id=x4QGYtQiXLNcKZJxXmn1ww
1枚目の画像に紫矢印で書いた部分が、エラーになっているようです。
これは、Cocoonで出力しているものではないと思います。
(コメントの中にコメントがある、他にもあるのかもしれませんが、そこまで見ていません)
これは、Cocoonで出力しているものではないと思います。
(コメントの中にコメントがある、他にもあるのかもしれませんが、そこまで見ていません)
確か、少し古いバージョンの「WEXAL」で、これは発生していたと思います。
(以前、このフォーラムでも見掛けましたような記憶が・・・)
(以前、このフォーラムでも見掛けましたような記憶が・・・)
(おそらく上記のことかとは思うのですが・・・)
まずは、一旦「WEXAL」を無効化していただけますでしょうか。
AMPページを作成しているのが「WEXAL」という訳ではないと思うのですが。
少なくとも「WEXAL」の介入は受けていると思いますので、原因の切り分けのためにも、無効化して確認した方が良いと思います。
少なくとも「WEXAL」の介入は受けていると思いますので、原因の切り分けのためにも、無効化して確認した方が良いと思います。
わいひら reacted
2024年9月30日 17:42
私のローカル環境で試してみました。
以下のような手順です。
- Cocoon 2.6.9でAMP機能を有効にし、実際に投稿ページにアクセスしてソースを確認
(AMP機能が廃止されたのは、2.7.0から)
- 上記環境のCocoonを2.7.7.4にバージョンアップ
(バージョンアップ以外は何もしない・変更等もしない)
- 項番1で表示したページをリロードして、ソースを確認
①Cocoon 2.6.9でAMPを有効にして、投稿ページのソースを確認したもの
AMPページのソースだと思います。
③Cocoon 2.7.7.4にバージョンアップして、リロードしたもの
通常ページ(非AMP)が表示されるみたいで、私の環境で上記のような手順では、再現されないのですよね。
わいひら reacted
2024年9月30日 18:41
質問2: ?amp=1 と ?amp ページ を正規のページにリダイレクトするのは、.htaccsess にどのように記載すればよいでしょうか?
ちなみに、リダイレクトは必要なのでしょうか。
読者さんは、どうやってAMPページにアクセスするのでしょう。
検索結果か何かで、AMPページがリンクされているのでしょうか。
もし必要であれば、プラグインをご利用のようですから、それを使った方が安全なような気はします。
Redirection 5.5.0
上記プラグインは使っていないのでイマイチやり方は分かりませんけれど。
ただ、AMPページが作成されなくなれば、特に必要ない気はしますけれど。
(私見ですので、有識者の方のご意見をうかがった方が良いと思います)
【追記】
投稿タイトルで検索してみると、リンクされているのは通常ページ(非AMP)でした。
わいひら reacted
Topic starter
2024年9月30日 19:01
@t-dorikame より
皆さんありがとうございます。
書き忘れたことがあります。
Cocoonの子テーマに、以下の古いコードが残っていました。
これが原因でAMPページが吐き出されているのでしょうか?
不要なら削除してもよいでしょうか?
///////////////////////////////////////////////
//通常ページとAMPページの内容を出しわけるショートコード
///////////////////////////////////////////////
//AMPページ
function add_amp_page($str, $amp_str = null) {
//文字列に含まれているショートコードを展開する ※追加箇所 1
$amp_str = do_shortcode($amp_str);
//ページがAMPページか判別する関数に渡して判別
if(is_amp()){
//AMPページならAMP用の文字列を返却
return $amp_str;
}
//通常ページなら終了
return;
}
//[add_amp]AMPページ用文字列[/add_amp]でショートコードを呼び出す
add_shortcode('add_amp', 'add_amp_page');
//通常ページ
function add_normal_page($str, $nml_str = null) {
//文字列に含まれているショートコードを展開する ※追記箇所 2
$nml_str = do_shortcode($nml_str);
//ページがAMPページか判別する関数に渡して判別
if(!is_amp()){
//通常ページなら通常ページ用の文字列を返却
return $nml_str;
}
//AMPページなら終了
return;
}
//[add_nml]通常ページ用文字列[/add_nml]でショートコードを呼び出す
add_shortcode('add_nml', 'add_normal_page');
//AMP判別関数
//?amp=1パラメーターを使用(simplicity用)
function is_amp(){
//AMPチェック
$is_amp = false;
if ( empty($_GET['amp']) ) {
return false;
}
//ampのパラメーターが1かつ投稿ページの
//かつsingleページのみ$is_ampをtrueにする
if(is_single() &&
$_GET['amp'] === '1'
){
$is_amp = true;
}
return $is_amp;
}
// 指定したショートコード内のbrタグを空白に置換
function shortcode_br_delete($the_content) {
// ショートコードのパターンを格納
$shortcode_pattern = '/\[add_amp\].+?\[\/add_amp\]|\[add_nml\].+?\[\/add_nml\]/ims';
// 指定したショートコード内のbrタグを空白に置換
$the_content = preg_replace_callback($shortcode_pattern,
function($matches) {
$str = preg_replace('/<br \/>/ims', '', $matches[0]);
return $str;
}
, $the_content);
return $the_content;
}
// wpautop実行後、ショートコード実行前にbrタグを削除する
add_filter('the_content', 'shortcode_br_delete',10);
///////////////////////////////////////////////
//終わり 通常ページとAMPページの内容を出しわけるショートコード
///////////////////////////////////////////////
//AMPページの内外リンク属性挿入 Ver2
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
}
function add_external_content( $content ) {
//AMPの判定
if(is_amp()){
//コンテンツをaタグで分割して配列へ格納
$datas = explode('<a' , $content);
$content="";
for($n = 0; $n < count($datas); $n++){
$data = $datas[$n];
if($n >= 1){
$data = '<a' . $data;
}
// リンクの取得
preg_match_all("| href=\"(.*?)\".*?>(.*?)</a>|mis", $data, $link_array);
$link_url_array = $link_array[1];
$link_text_array = $link_array[2];
for($i = 0; $i < count($link_url_array); $i++){
// リンクの編集
$link = $link_url_array[$i];
$lk_text = strip_tags($link_text_array[$i]);
$replaced = $link;
$replaced = 'href="' . $link . '" data-vars-href="' . $link . '"' . ' data-vars-clicktext="' . $lk_text . '';
$data = str_replace( 'href="' . $link, $replaced, $data );
}
// 編集処理したコンテンツを戻す
$content = $content . $data;
}
}
return $content;
}
add_filter( 'the_content', 'add_external_content', 20 );
//自動で目次に戻るリンクを挿入
add_filter('the_content', function( $content ){
if ( is_singular() && strpos( $content, ' id="toc-checkbox-' ) !== false ){
//挿入するHTML
$back_toc = '<div class="back-toc"><a href="#toc-checkbox-1"><i class="fa fa-arrow-up" aria-hidden="true"></i> 目次に戻る</a></div>';
//AMPページではチェックボックスのidが変わるので置換
if( is_amp() ) {
$back_toc = str_replace('href="#toc-checkbox-1"', 'href="#toc-checkbox-1" data-vars-href="#toc-checkbox-1" data-vars-clicktext="目次に戻る"', $back_toc);
$id_check = preg_match('/ id="(toc-checkbox-\d+)"/', $content, $id_match);
$back_toc = str_replace('#toc-checkbox-1', '#'.$id_match[1], $back_toc);
}
$count = 0;
$content = preg_replace_callback('/<h2 *[^>]*>/i', function( $m ) use (&$count, $back_toc) {
$count++;
if( $count == 1 ) {
return $m[0]; //一番最初のh2には挿入しない
} else {
return $back_toc.PHP_EOL.$m[0];
}
}, $content, -1).$back_toc.PHP_EOL;
}
return $content;
}, 99999);
2024年9月30日 19:45
Cocoonの子テーマに、以下の古いコードが残っていました。
これが原因でAMPページが吐き出されているのでしょうか?
不要なら削除してもよいでしょうか?
●回答
ご自身で追加した、カスタマイズした内容が分からないなら、削除すべきです。
独自ショートコードで、AMPページか、通常ページか表示を切り替え表示をしています。
ショートコードを使用しているか確認し、不要なら削除。
見出しH2の前に目次へ戻るリンクは使っているようです。
/////////////////////////////////////////////// // 通常ページとAMPページの内容を出しわけるショートコード /////////////////////////////////////////////// // AMPページ function add_amp_page($str, $amp_str = null) { // 文字列に含まれているショートコードを展開する ※追加箇所 1 $amp_str = do_shortcode($amp_str); // ページがAMPページか判別する関数に渡して判別 if (is_amp()) { // AMPページならAMP用の文字列を返却 return $amp_str; } // 通常ページなら終了 return; } // [add_amp]AMPページ用文字列[/add_amp]でショートコードを呼び出す add_shortcode('add_amp', 'add_amp_page'); ----------------------------------------- 独自ショートコードadd_ampを用い、通常ページならコメント出力 // 通常ページ function add_normal_page($str, $nml_str = null) { // 文字列に含まれているショートコードを展開する ※追記箇所 2 $nml_str = do_shortcode($nml_str); // ページがAMPページか判別する関数に渡して判別 if (!is_amp()) { // 通常ページなら通常ページ用の文字列を返却 return $nml_str; } // AMPページなら終了 return; } // [add_nml]通常ページ用文字列[/add_nml]でショートコードを呼び出す add_shortcode('add_nml', 'add_normal_page'); ----------------------------------------- 独自ショートコードadd_nmlを用い、AMPページならコメント出力 // AMP判別関数 // ?amp=1パラメーターを使用(simplicity用) function is_amp() { // AMPチェック $is_amp = false; if (empty($_GET['amp'])) { return false; } // ampのパラメーターが1かつ投稿ページの // かつsingleページのみ$is_ampをtrueにする if (is_single() && $_GET['amp'] === '1') { $is_amp = true; } return $is_amp; } ----------------------------------------- AMPページか否かを判定しAMPならtrueを返却 // 指定したショートコード内のbrタグを空白に置換 function shortcode_br_delete($the_content) { // ショートコードのパターンを格納 $shortcode_pattern = '/\[add_amp\].+?\[\/add_amp\]|\[add_nml\].+?\[\/add_nml\]/ims'; // 指定したショートコード内のbrタグを空白に置換 $the_content = preg_replace_callback($shortcode_pattern, function($matches) { $str = preg_replace('/<br \/>/ims', '', $matches[0]); return $str; }, $the_content); return $the_content; } // wpautop実行後、ショートコード実行前にbrタグを削除する add_filter('the_content', 'shortcode_br_delete', 10); ----------------------------------------- 独自add_ampショートコード内の余分なbrタグを除去 /////////////////////////////////////////////// // 終わり 通常ページとAMPページの内容を出しわけるショートコード /////////////////////////////////////////////// // AMPページの内外リンク属性挿入 Ver2 add_action('wp_enqueue_scripts', 'theme_enqueue_styles'); function theme_enqueue_styles() { } ----------------------------------------- 呼び出し関数が空なので不要 function add_external_content($content) { // AMPの判定 if (is_amp()) { // コンテンツをaタグで分割して配列へ格納 $datas = explode('<a', $content); $content = ""; for ($n = 0; $n < count($datas); $n++) { $data = $datas[$n]; if ($n >= 1) { $data = '<a' . $data; } // リンクの取得 preg_match_all('| href="(.*?)".*?>(.*?)</a>|mis', $data, $link_array); $link_url_array = $link_array[1]; $link_text_array = $link_array[2]; for ($i = 0; $i < count($link_url_array); $i++) { // リンクの編集 $link = $link_url_array[$i]; $lk_text = strip_tags($link_text_array[$i]); $replaced = $link; $replaced = 'href="' . $link . '" data-vars-href="' . $link . '"' . ' data-vars-clicktext="' . $lk_text . ''; $data = str_replace('href="' . $link, $replaced, $data); } // 編集処理したコンテンツを戻す $content = $content . $data; } } return $content; } add_filter('the_content', 'add_external_content', 20); ----------------------------------------- AMPページなら書き替え? // 自動で目次に戻るリンクを挿入 add_filter('the_content', function($content) { if (is_singular() && strpos($content, ' id="toc-checkbox-') !== false) { // 挿入するHTML $back_toc = '<div class="back-toc"><a href="#toc-checkbox-1"><i class="fa fa-arrow-up" aria-hidden="true"></i> 目次に戻る</a></div>'; // AMPページではチェックボックスのidが変わるので置換 if (is_amp()) { $back_toc = str_replace('href="#toc-checkbox-1"', 'href="#toc-checkbox-1" data-vars-href="#toc-checkbox-1" data-vars-clicktext="目次に戻る"', $back_toc); $id_check = preg_match('/ id="(toc-checkbox-\d+)"/', $content, $id_match); $back_toc = str_replace('#toc-checkbox-1', '#' . $id_match[1], $back_toc); } $count = 0; $content = preg_replace_callback('/<h2 *[^>]*>/i', function($m) use (&$count, $back_toc) { $count++; if ($count == 1) { return $m[0]; // 一番最初のh2には挿入しない } else { return $back_toc . PHP_EOL . $m[0]; } }, $content, -1) . $back_toc . PHP_EOL; } return $content; }, 99999); ----------------------------------------- 見出しH2の前に目次戻るリンクを追加
わいひら reacted
2024年9月30日 20:12
質問2: ?amp=1 と ?amp ページ を正規のページにリダイレクトするのは、.htaccsess にどのように記載すればよいでしょうか?
?ampページは正規のページなので、?amp=1ページだけに絞るとコードは以下のようになるかと思います。
RewriteEngine On RewriteCond %{QUERY_STRING} ^amp=1$ [NC] RewriteRule ^(.*)$ /$1? [R=301,L]
※動作確認はしていないので、動作がおかしい場合は削除して元に戻してください。
Topic starter
2024年10月3日 15:50
みなさんありがとうございました。
APMページが勝手に生成される事象は保留にしました。Googleでインデックスされていないからです。念のために301のリダイレクトを設定しておきます。
大変お手数おかけしました。
わいひら reacted
2024年10月3日 17:16
t.dorikameさん
それも考え方の1つではないかと。
ちなみに、以下は現在AMPページではないようです。
(特にリダイレクトもされていないようです)
https://search.google.com/test/amp/result?id=bBgMgTDs7M5kggsO-w2R1g
お返事いただきましたので、このトピックは「解決済み」にさせていただきますね。
わいひら reacted
問題の解決に至った場合には、トピック冒頭の「解決済み」をクリックしていただけますと幸いです。
また、有用な回答があった場合は返信右下にある「いいね!」もご活用ください。回答者の励みになります。
(CC BY-ND 2.1)準じていれば(リンクを貼っていただければ)転載も自由です。カスタマイズ記事を書く際にコード等をコピペ利用していただいて構いません。
フォーラムの使い方がよくわからない場合は、テストトピックで自由にテストしていただいて構いません。
最近の書き込みはこちら。
詳細なカスタマイズ依頼をするならこちら。