PHPビギナーにつき壁にぶち当たっています。どうかご教示のほどよろしくお願いいたします。
前提・実現したいこと
Wordpressにて公開している自サイトで配信しているRSSフィードにて、MOREタグをつけた任意の場所に「…の続きを読む」という自サイトへと誘導するリンクを設置したいです。
いろいろと調べたところ、web上で公開されていた以下のコードをfunctions.phpに記述する方法で可能だということがわかりました。
function my_content_feeds($content) { global $post, $more; $more = false; $content = apply_filters('the_content', get_the_content('')); $content = str_replace(']]>', ']]>', $content); $content = $content . '<div><a href="' . get_permalink($post->ID) . '">「 ' . get_the_title($post->ID) . ' 」の続きを読む</a></div>'; return $content; } add_filter('the_excerpt_rss', 'my_content_feeds'); add_filter('the_content_feed', 'my_content_feeds');
以上のことに加え、MOREタグをつけた記事のみ「…の続きを読む」を表示したいです。
発生している問題
すでに以下のコード(RSSにて特定のコード部分を非表示にする設定)がfunctions.phpにあり、関数の重複?にてエラーが表示されます。
function my_content_feeds( $content ) { $content = apply_filters( 'the_content', get_the_content() ); $content = preg_replace("/<div class=\"ad_hide\">.*?</div>/s","",$content); $content = preg_replace("/<a class=\"link_hide\">.*?</a>/s","",$content); return $content; } add_filter( 'the_excerpt_rss', 'my_content_feeds' ); add_filter( 'the_content_feed', 'my_content_feeds' );
試したこと
そこでコードを以下のように統合してみました。
function my_content_feeds( $content ) { $content = apply_filters( 'the_content', get_the_content() ); $content = preg_replace("/<div class=\"ad_hide\">.*?</div>/s","",$content); $content = preg_replace("/<a class=\"link_hide\">.*?</a>/s","",$content); global $post, $more; $more = false; /*$content = apply_filters('the_content', get_the_content(''));*/ //重複のため削除 $content = str_replace(']]>', ']]>', $content); $content = $content . '<div><a href="' . get_permalink($post->ID) . '">「 ' . get_the_title($post->ID) . ' 」の続きを読む</a></div>'; return $content; } add_filter( 'the_excerpt_rss', 'my_content_feeds' ); add_filter( 'the_content_feed', 'my_content_feeds' );
しかし、結果としては…
①MOREタグの部分ではなく、記事全文が表示されたうえに末尾に「…続きを読む」が表示される。
②MOREタグをつけない記事の末尾にも「…続きを読む」が表示される。
…となりました。
安易なコードの統合が不具合を招いているのではないかと考えています。
この場合、どのように統合(あるいは分けて記述)するのが正しいのかのヒントをご教示いただきたいです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/16 06:13
2019/06/16 08:54
2019/06/17 09:48