Simplicityの特徴 › フォーラム › 不具合報告 › 内部テキストリンクがブログカードに変換されてしまう
- このトピックには8件の返信、2人の参加者があり、最後に
ひゃっかいだんにより4年、 6ヶ月前に更新されました。
-
投稿者投稿
-
-
ひゃっかいだん
ゲスト記事中にブログ内部に向けたテキストリンクを貼り、かつ通常の内部リンクブログカードを同記事内に設置すると、テキストリンク側のURLがブログカードに変換されてしまう不具合を発見しました。
さらに記事下の関連記事からすべてのCSSも崩れてしまいます。不具合の出る状況にしたページを作りましたので、ご確認ください。
https://gadget.hyakkaidan.com/page-4922/ -
わいひら
キーマスターこれは、エディターにワードのように入力されているのでしょうか?
エディターに入力してるHTMLのソースコードをいただければと思います。
-
ひゃっかいだん
ゲスト返答ありがとうございます。
Gutenbergを使用し、ビジュアルエディターから通常の手段を用いてテキストリンクを生成、URLを埋め込んでおります。
コードエディターではこのようなソースになります。<!-- wp:paragraph --> <p>あああ<a href="https://gadget.hyakkaidan.com/4862/">あああ</a>あああ</p> <!-- /wp:paragraph --> <!-- wp:core-embed/wordpress {"url":"https://gadget.hyakkaidan.com/4862/","type":"wp-embed","providerNameSlug":"cpuのカボス漬け","className":""} --> <figure class="wp-block-embed-wordpress wp-block-embed is-type-wp-embed is-provider-cpuのカボス漬け"><div class="wp-block-embed__wrapper"> https://gadget.hyakkaidan.com/4862/ </div></figure> <!-- /wp:core-embed/wordpress --> <!-- wp:paragraph --> <p>あああああああああ</p> <!-- /wp:paragraph -->
-
わいひら
キーマスター子テーマのfunctions.phpに以下のコードを貼り付けて、改善するか確認していただけますか?
//figure.wp-block-embedとdiv.wp-block-embed__wrapperの除外 add_filter('the_content', 'remove_wp_block_embeds'); if ( !function_exists( 'remove_wp_block_embeds' ) ): function remove_wp_block_embeds($the_content){ $the_content = preg_replace('/<figure class="wp-block-embed"><div class="wp-block-embed__wrapper">(.*?'.URL_REG_STR.'.*?)<\/div><\/figure>/is', '$1', $the_content); return $the_content; } endif;
-
ひゃっかいだん
ゲスト指定のコードを張り付けて確認しました。
問題は解決されず、以下のエラーが表示されます。Use of undefined constant URL_REG_STR – assumed ‘URL_REG_STR’ (this will throw an Error in a future version of PHP) in …
当該のブログで使用しているphpバージョンは7.2.6です。
-
わいひら
キーマスター定数が指定されていませんでした。
以下のように書く必要があるかもしれません。//URLの正規表現 define('URL_REG_STR', '(https?|ftp)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)'); //figure.wp-block-embedとdiv.wp-block-embed__wrapperの除外 add_filter('the_content', 'remove_wp_block_embeds'); if ( !function_exists( 'remove_wp_block_embeds' ) ): function remove_wp_block_embeds($the_content){ $the_content = preg_replace('/<figure class="wp-block-embed"><div class="wp-block-embed__wrapper">(.*?'.URL_REG_STR.'.*?)<\/div><\/figure>/is', '$1', $the_content); return $the_content; } endif;
-
ひゃっかいだん
ゲスト残念ながら定数を指定しても当該の現象は解決されませんでした。
ひとまずはテキストリンクをブログカードを併用しない形でブログを運営していこうと思います。
ありがとうございました。
今後ともよろしくお願いいたします。 -
わいひら
キーマスター新テーマのCocoonでは、これでうまくいったんですけどね。
ただ、よくよくコードを見直してみるとこれならうまくいくかも。
//URLの正規表現
define('URL_REG_STR', '(https?|ftp)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)'); //figure.wp-block-embedとdiv.wp-block-embed__wrapperの除外 add_filter('the_content', 'remove_wp_block_embeds'); if ( !function_exists( 'remove_wp_block_embeds' ) ): function remove_wp_block_embeds($the_content){ $the_content = preg_replace('/<figure class="[^"]+"><div class="wp-block-embed__wrapper">(.*?'.URL_REG_STR.'.*?)<\/div><\/figure>/is', '$1', $the_content); return $the_content; } endif;
これでダメなら、書かれた方法で行った方が良いかもしれません。
-
ひゃっかいだん
ゲストわざわざありがとうございます。
テストしてみましたが、残念ながら不具合が修正されることはありませんでした。
Cocoonへの移行も考慮に入れてブログを運営していこうと思います。非常に丁寧な対応をありがとうございました。!
-
-
投稿者投稿