外部WordPressサイトのRSSに含まれるカスタムフィールドの情報をRSSブロックに表示したい

0
Who liked: No user
  • このトピックには3件の返信、2人の参加者があり、最後にmjmjsachiにより1年、 7ヶ月前に更新されました。
4件の投稿を表示中 - 1 - 4件目 (全4件中)
  • 投稿者
    投稿
  • #120393
    mjmjsachi
    参加者
    10

    【お使いの Snow Monkey のバージョン】バージョン: 19.2.0
    【お使いの Snow Monkey Blocks のバージョン】バージョン 18.2.0
    【お使いの Snow Monkey Editor のバージョン】(使っていない)
    【お使いのブラウザ】Google Chrome
    【当該サイトのURL】(未公開)

    ### 実現したいこと
    WordPressで構築された外部サイトのカスタムフィールドの情報を
    Snow Monkey Blocks の「RSSブロック」に表示したいと考えています。

    ### 試したこと
    フォーラムの「サブディレクトリにインストールしている別WPの記事サムネイルをRSSで取得したい」トピックを見て、アイキャッチ画像と目的のカスタムフィールドの値をRSSフィードに含めるところまでできました。
    ※アイキャッチ画像は表示されました!

    http://www.kfca.jp/kikaku/feed/
    ここで <postmeta> として配信されている部分を「RSSブロック」に出力したく、
    以下のように My Snow Monkey であれこれ試してみたのですが、力不足で実現できませんでした。

    add_filter(
    	'snow_monkey_template_part_render_template-parts/loop/rss',
    	//rssが対象
    	function( $html ) {
    			ob_start();
    			?>
    			<div class="event-meta">
    			<?php 
    			// ここをどうすれば良いかわかりませんでした;;
    			?>
    			</div>
    			<?php
    			$postmeta = ob_get_clean();
    			return str_replace(
    				'</header>',
    				'</header>'.$postmeta,
    				$html
    			);
    		return $html;
    	}
    );

    お力を貸していただけますと幸いです。
    よろしくお願いいたします。

    0
    Who liked: No user
    #120400
    アバター画像キタジマ タカシ
    参加者
    2421

    コールバック関数の第3引数 $vars の中の _itemSimplePieItem という RSS のアイテムを解析してオブジェクトにしてくれたやつが入っています。その中にちゃんと postmeta というデータも含まれているみたいだったのですが、僕も SimplePie に詳しくなくて、ちょっとこれがベストなのか自身はないのですが動いているみたいなので共有します。

    $vars['_item']->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['postmeta'][0]['data'] という感じでデータがとれるみたいです。

    add_filter(
    	'snow_monkey_template_part_render_template-parts/loop/rss',
    	function( $html, $name, $vars ) {
    			$postmeta = ! empty( $vars['_item']->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['postmeta'][0]['data'] )
    				? $vars['_item']->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['postmeta'][0]['data']
    				: false;
    
    			// postmeta がなければ何もせずに return
    			if ( ! $postmeta ) {
    				return $html;
    			}
    
    			ob_start();
    			?>
    			<div class="event-meta">
    				<?php echo esc_html( $postmeta ); ?>
    			</div>
    			<?php
    			$postmeta = ob_get_clean();
    
    			return str_replace(
    				'</header>',
    				'</header>' . $postmeta,
    				$html
    			);
    		return $html;
    	},
    	10,
    	3
    );
    1
    Who liked:
    #120410
    mjmjsachi
    参加者
    10

    動きました!
    早々に具体的な解決方法を共有いただきありがとうございます。
    これでやりたいことが実現できそうです。フォーラムの過去トピックの皆さまにも感謝です!

    こちら閉じさせていただきます。

    1
    Who liked:
    #122120
    mjmjsachi
    参加者
    10

    こちらでサポートいただいたサイトが無事に公開できました。

    トップページの「新着イベント」部分と、イベント情報ページでこのトピックのRSSブロックを使っています。
    改めまして、ありがとうございました!

    2
    Who liked:
4件の投稿を表示中 - 1 - 4件目 (全4件中)
  • トピック「外部WordPressサイトのRSSに含まれるカスタムフィールドの情報をRSSブロックに表示したい」には新しい返信をつけることはできません。

ドキュメント

Snow Monkey の設定方法やマニュアルを掲載しています。

ドキュメント

フォーラム

Snow Monkey の使い方やカスタマイズについてのご質問・ご要望等はサポートフォーラムで行っています。サポートフォーラムは誰でも閲覧できますが、書き込みできるのは Snow Monkey 購入者のみとなります。

サポートフォーラム

よくあるご質問

Snow Monkey のサービスについて不明な点がある場合は、まずはよくあるご質問をご確認ください。

よくあるご質問

お問い合わせ

よくあるご質問を見ても解決しなかった場合、試用版の申請については問い合わせフォームからお願いいたします。

お問い合わせ

Snow Monkey は Gutenberg ブロックエディターに対応した 100%GPL の WordPress テーマです。拡張性を意識した開発をおこなっており、カスタマイザーとブロックでスピーディーにサイトを立ち上げるだけでなく、CSS やフックを駆使した高度なカスタマイズにも柔軟に対応できます。