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

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

Ampの生成がOFFなのに ?amp=...
 
共有:
通知
すべてクリア

[解決済] Ampの生成がOFFなのに ?amp=1 や ?amp ページが生成されています。生成されないようにするにはどうすればいいですか?

11 投稿
4 ユーザー
8 Reactions
189 表示
(@t-dorikame)
Active Member Registered
結合: 7年前
投稿: 10
トピックスターター  

お世話になります。

すばらしいテーマ 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
----------------------------------------------

 


   
トピックタグ
mk2
(@mk2_mk2)
Illustrious Member Moderator
結合: 4年前
投稿: 8059
 

t.dorikameさん

投稿者:: @t-dorikame

https://www.amamoba.com/pc/iphone-net-kyouyu3.html?amp

上記は、通常ページ(非AMP)かと思います。

ソースを見ても、通常ページに見えます。

 
AMPテストをしても、同様です。

   
わいひら reacted
mk2
(@mk2_mk2)
Illustrious Member Moderator
結合: 4年前
投稿: 8059
 

投稿者:: @t-dorikame

https://www.amamoba.com/pc/iphone-net-kyouyu3.html?amp=1

上記は、確かにAMPページが作成されている感じがします。

 
但し、エラーがあるため無効状態のようです。
https://search.google.com/test/amp/result?id=x4QGYtQiXLNcKZJxXmn1ww
 
 
1枚目の画像に紫矢印で書いた部分が、エラーになっているようです。
これは、Cocoonで出力しているものではないと思います。
(コメントの中にコメントがある、他にもあるのかもしれませんが、そこまで見ていません)
 
確か、少し古いバージョンの「WEXAL」で、これは発生していたと思います。
(以前、このフォーラムでも見掛けましたような記憶が・・・)
 
(おそらく上記のことかとは思うのですが・・・)
 
 
 
まずは、一旦「WEXAL」を無効化していただけますでしょうか。
 
AMPページを作成しているのが「WEXAL」という訳ではないと思うのですが。
少なくとも「WEXAL」の介入は受けていると思いますので、原因の切り分けのためにも、無効化して確認した方が良いと思います。

   
わいひら reacted
mk2
(@mk2_mk2)
Illustrious Member Moderator
結合: 4年前
投稿: 8059
 

私のローカル環境で試してみました。

以下のような手順です。

  1. Cocoon 2.6.9でAMP機能を有効にし、実際に投稿ページにアクセスしてソースを確認
    (AMP機能が廃止されたのは、2.7.0から)
     
  2. 上記環境のCocoonを2.7.7.4にバージョンアップ
    (バージョンアップ以外は何もしない・変更等もしない)
     
  3. 項番1で表示したページをリロードして、ソースを確認

 

①Cocoon 2.6.9でAMPを有効にして、投稿ページのソースを確認したもの

 
AMPページのソースだと思います。
 
 
③Cocoon 2.7.7.4にバージョンアップして、リロードしたもの
 
通常ページ(非AMP)が表示されるみたいで、私の環境で上記のような手順では、再現されないのですよね。

   
わいひら reacted
mk2
(@mk2_mk2)
Illustrious Member Moderator
結合: 4年前
投稿: 8059
 

書き忘れました。

投稿者:: @mk2_mk2

1枚目の画像に紫矢印で書いた部分が、エラーになっているようです。

これ、投稿ページにも表示されてしまっているんですよね。


   
わいひら reacted
mk2
(@mk2_mk2)
Illustrious Member Moderator
結合: 4年前
投稿: 8059
 

投稿者:: @t-dorikame

質問2:  ?amp=1 と ?amp ページ を正規のページにリダイレクトするのは、.htaccsess にどのように記載すればよいでしょうか?

ちなみに、リダイレクトは必要なのでしょうか。

読者さんは、どうやってAMPページにアクセスするのでしょう。
検索結果か何かで、AMPページがリンクされているのでしょうか。

もし必要であれば、プラグインをご利用のようですから、それを使った方が安全なような気はします。

投稿者:: @t-dorikame

Redirection 5.5.0

上記プラグインは使っていないのでイマイチやり方は分かりませんけれど。
ただ、AMPページが作成されなくなれば、特に必要ない気はしますけれど。
(私見ですので、有識者の方のご意見をうかがった方が良いと思います)

 

【追記】

投稿タイトルで検索してみると、リンクされているのは通常ページ(非AMP)でした。


   
わいひら reacted
(@t-dorikame)
Active Member Registered
結合: 7年前
投稿: 10
トピックスターター  

@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);

 

 

 


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

投稿者:: @t-dorikame

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
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 7年前
投稿: 17372
 

投稿者:: @t-dorikame

質問2:  ?amp=1 と ?amp ページ を正規のページにリダイレクトするのは、.htaccsess にどのように記載すればよいでしょうか?

?ampページは正規のページなので、?amp=1ページだけに絞るとコードは以下のようになるかと思います。

RewriteEngine On
RewriteCond %{QUERY_STRING} ^amp=1$ [NC]
RewriteRule ^(.*)$ /$1? [R=301,L]

※動作確認はしていないので、動作がおかしい場合は削除して元に戻してください。


   
(@t-dorikame)
Active Member Registered
結合: 7年前
投稿: 10
トピックスターター  

みなさんありがとうございました。

APMページが勝手に生成される事象は保留にしました。Googleでインデックスされていないからです。念のために301のリダイレクトを設定しておきます。

大変お手数おかけしました。


   
わいひら reacted
mk2
(@mk2_mk2)
Illustrious Member Moderator
結合: 4年前
投稿: 8059
 

t.dorikameさん

それも考え方の1つではないかと。

ちなみに、以下は現在AMPページではないようです。
(特にリダイレクトもされていないようです)

投稿者:: @t-dorikame

https://www.amamoba.com/pc/iphone-net-kyouyu3.html?amp=1

https://search.google.com/test/amp/result?id=bBgMgTDs7M5kggsO-w2R1g

 
 
お返事いただきましたので、このトピックは「解決済み」にさせていただきますね。

   
わいひら reacted
共有:

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

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

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

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

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

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

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

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