場合によっては、Web サイトの外にコンテンツを送信することで、オンラインでの存在感を高め、より幅広い視聴者にリーチする必要があるかもしれません。たとえば、投稿を最も人気のあるソーシャル ネットワーク アグリゲータで利用できるようにしたり、モバイル デバイスで利用できるようにしたり、デジタル ストアでオーディオ/ビデオ ポッドキャストを公開したりすることができます。
ほとんどの場合、カスタム メタデータを追加して、RSS フィードをカスタマイズして公開に適したものにする必要があります。
このチュートリアルでは、Flipboard と iTunes Store という 2 つの主要なプラットフォームでこれを実現する方法を説明しますが、コードは他のプラットフォームや Web サービス用に簡単にカスタマイズできます。
###導入###
Flipboard は、Android および iOS デバイス用のソーシャル ネットワーク アグリゲーション アプリで、Web サイトから定期的にコンテンツを取得し、それを雑誌形式で表示し、モバイル ユーザーがスマートフォンやタブレットにインストールされたアプリ経由でアクセスできるようにします。ニュースを読んでください。 iTunes Store は、オーディオまたはビデオのポッドキャストを公開できるオンライン デジタル メディア ストアです。
どちらのサービスへの購読も無料ですが、特に Flipboard は読者数の多いサイトのみを受け入れているようですので、承認が必要です。
どちらもブログ RSS フィード経由でコンテンツを公開できますが、これは仕様に準拠している必要があります。幸いなことに、WordPress では開発者がデフォルトの RSS フィード構造を変更できます。
ステップ 1
デフォルトの WordPress RSS フィード構造 デフォルトでは、WordPress にはさまざまなフィードが付属しています。このチュートリアルでは、次の条件が満たされる場合、
http://example.com/?feed=rss2または http://example.com/feed/ を使用します。 2.0 フィードではパーマリンクを使用します。このフィードは、次の構造を持つ単純な XML ドキュメントです: リーリー ご覧のとおり、各
要素は投稿を表し、複数の子要素が含まれており、それぞれがその投稿の「コンポーネント」に関連しています。がある:###
<item>
</item>
- は投稿のタイトルです
<title> </title>
- は投稿の固定リンクです。
<link>
は、RFC822 形式のリリース日です。
-
<pubdate></pubdate>
は投稿者の名前です。 -
<creator></creator>
は要素のサブセットであり、投稿カテゴリごとに 1 つの -
<category></category>
は、HTML タグのない投稿の抜粋です。
-
<description></description>
は HTML タグを含む投稿コンテンツ全体です -
<encoded> </encoded>
ステップ 2 Flipboard の RSS フィードをカスタマイズする
コンテンツは、Flipboard の技術要件に基づいて強化される場合があります。
記事のマークアップで追加のセマンティクスを提供することで、引用、スライドショー、その他のデザイン要素を指定する機能を追加します。
これらの追加のセマンティクスは次のとおりです:
画像、ビデオ、およびオーディオのリソースタイトルとサブタイトル
###引用###
スライドショー
- 地理情報
- これらのセマンティクスは、プラグインを通じて RSS フィードに実装できます。前に述べたように、WordPress にはデフォルトの RSS フィード構造を変更できる特定のフックが用意されています。
- rss2_ns - ルート XML 要素内に新しい名前空間を追加できるようにします。
- rss2_head
- the_content_feed
- - フィードに表示される各投稿のコンテンツの変更を許可します;
- - 各
-
- ファイルを
/wp-content/plugins/
ディレクトリにコピーし、Plugins<item> 管理ページから有効化します。 </item>
タイトルとサブタイトル
投稿コンテンツの前にタイトルとサブタイトルを追加する場合は、次の内容を追加する必要があります: リーリー テキスト エディターで手動で投稿コンテンツに追加することもできますが、これらのタグは Web サイトにも表示されるため、これは最良の解決策ではありません (
hgroup要素を非表示にしない限り) CSS スタイリング経由)。したがって、これを RSS フィード でのみ自動的に実現するには、 要素と
サブタイトル フィールドを使用して投稿タイトルをカスタマイズすることをお勧めします。 .投稿の編集ページで、
flipboard_subtitle カスタム フィールドを追加します。
<h1 id="次の行を">次の行を </h1>
Flipboard RSS Feed プラグインに追加します: <h2>
リーリー
</h2>
ここで、投稿を公開して RSS フィード ページのソースを更新すると、投稿コンテンツの前に
タグが表示されます。
引用
对于拉引号,您可以在帖子内容中使用 <blockquote></blockquote>
标记来指出文本的某些部分。我们可以利用该插件将 <blockquote></blockquote>
替换为 <aside></aside>
标签。
将这些行添加到我们的 Flipboard RSS Feed 插件中:
add_filter( 'the_content_feed', 'flipboard_pull_quotes' ); function flipboard_pull_quotes( $content ) { // replace blockquote tag with aside return str_replace( 'blockquote>', 'aside>', $content ); }
重新加载您的 RSS Feed 页面源代码,您将看到新的 <aside></aside>
标记。
图片
对于所有这些元素,我们将遵循 Flipboard 建议的另一种方法:我们将向 <item></item>
元素添加新的媒体 RSS 元素子集,而不是将语义直接放入帖子内容中。
Media RSS 是一种 RSS 扩展,可增强 RSS 源中多媒体文件的发布。由于其特殊元素,图像、视频和音频文件及其元数据可以包含到 RSS 源中。
在我们的例子中,我们将使用其中主要的一个:<content></content>
。
此外,我们还需要GeoRSS扩展来支持地理信息,因此我们必须向RSS Feed添加正确的命名空间才能使其有效。
将这些行添加到我们的 Flipboard RSS Feed 插件中:
add_filter( 'rss2_ns', 'flipboard_namespace' ); function flipboard_namespace() { echo 'xmlns:media="http://search.yahoo.com/mrss/" xmlns:georss="http://www.georss.org/georss"'; }
结果将是:
现在我们想要将帖子中附加的所有图像添加到 RSS 提要中。我们必须做这样的事情:
<item> <!-- Full item markup omitted for brevity --> <media:content type="image/jpeg" media="image" width="900" height="600" url="http://media.example.com/kitten-landscape.jpg"> <media:description type="plain">An adorable kitten</media:description> <media:copyright>Carl Carlson</media:copyright> </media:content> </item>
<content></content>
元素支持两个子元素: <description></description>
是用于图像的标题,在 WordPress 中是图像的标题,而 <media: copyright></media:>
包含图像作者的版权信息或来源。
现在,我们将在 WordPress Feed 中实现这一点。撰写帖子并附加一些图像(请注意,图像的最小尺寸必须至少为 400 像素):
发布帖子,然后将这些行添加到我们的 Flipboard RSS Feed 插件中:
add_filter( 'rss2_item', 'flipboard_attached_images' ); function flipboard_attached_images() { global $post; $attachments = get_posts( array( 'post_type' => 'attachment', 'post_mime_type' => 'image', 'posts_per_page' => -1, 'post_parent' => $post->ID, 'exclude' => get_post_thumbnail_id() ) ); if ( $attachments ) { foreach ( $attachments as $att ) { $img_attr = wp_get_attachment_image_src( $att->ID, 'full' ); ?> <media:content url="<?php echo $img_attr[0]; ?>" type="<?php echo $att->post_mime_type; ?>" medium="image" width="<?php echo $img_attr[1]; ?>" height="<?php echo $img_attr[2]; ?>"> <media:description type="plain"><![CDATA[<?php echo $att->post_title; ?>]]></media:description> <media:copyright><?php echo get_the_author(); ?></media:copyright> </media:content> <?php } } }
重新加载您的 RSS Feed 页面源代码,您将看到每个附加图像的 <content></content>
元素。
关于 <group></group>
元素的简要说明:它可用于提供同一图像的替代裁剪和尺寸,例如纵向/横向版本。
视频
对于视频文件 Flipboard 建议使用以下代码:
<media:content url="http://www.example.com/lisa-saxophone.mp4" type="video/mp4"> <media:description type="plain">Lisa plays the saxophone</media:description> <media:thumbnail url="http://www.example.com/lisa-saxophone.jpg" width="200" height="200" /> <media:copyright>Carl Carlson</media:copyright> </media:content>
这里我们有一个新的子元素:<thumbnail></thumbnail>
:它只是指定视频的预览图像。这可能有点棘手,因为我们需要一种方法来在附加视频与其预览图像之间创建直接连接,并告诉 WordPress 这两个文件已连接。我们可以这样进行:
- 添加新帖子并附加一个或多个视频/音频
- 在媒体库页面中,上传预览图像,记下图像尺寸并复制图像文件网址
- 在媒体库中找到视频,对其进行编辑并将图像 URL 粘贴到说明字段中,还添加宽度和图像的高度,每个由管道字符“
|
”分隔。为了设置正确的图像尺寸,这是必要的。
现在是时候将视频放入我们的 RSS 源中了。将这些行添加到我们的 Flipboard RSS Feed 插件中:
add_filter( 'rss2_item', 'flipboard_attached_videos' ); function flipboard_attached_videos() { global $post; $attachments = get_posts( array( 'post_type' => 'attachment', 'post_mime_type' => 'video', 'posts_per_page' => -1, 'post_parent' => $post->ID, 'exclude' => get_post_thumbnail_id() ) ); if ( $attachments ) { foreach ( $attachments as $att ) { $video_url = wp_get_attachment_url( $att->ID ); $parts = explode( '|', $att->post_content ); ?> <media:content url="<?php echo $video_url; ?>" type="<?php echo $att->post_mime_type; ?>"> <media:description type="plain"><![CDATA[<?php echo $att->post_title; ?>]]></media:description> <media:copyright><?php echo get_the_author(); ?></media:copyright> <media:thumbnail url="<?php echo $parts[0]; ?>" width="<?php echo $parts[1]; ?>" height="<?php echo $parts[2]; ?>" /> </media:content> <?php } } }
这是最终结果:
音频
音频文件的 Fliboard 代码是:
<media:content url="http://www.example.com/bartman.mp3" fileSize="1000" type="audio/mpeg" > <media:description type="plain">Lisa plays the saxophone</media:description> <media:thumbnail url="http://www.example.com/lisa-saxophone.jpg" width="200" height="200" /> <media:copyright>Carl Carlson</media:copyright> </media:content>
如您所见,它与视频基本相同:因此要将图像预览附加到音频文件,我们可以使用与视频相同的方法。
因此,在我们的插件中添加这些行:
add_filter( 'rss2_item', 'flipboard_attached_audio' ); function flipboard_attached_audio() { global $post; $attachments = get_posts( array( 'post_type' => 'attachment', 'post_mime_type' => 'audio', 'posts_per_page' => -1, 'post_parent' => $post->ID, 'exclude' => get_post_thumbnail_id() ) ); if ( $attachments ) { foreach ( $attachments as $att ) { $audio_url = wp_get_attachment_url( $att->ID ); $parts = explode( '|', $att->post_content ); $headers = get_headers( $audio_url, 1 ); $filesize = $headers['Content-Length']; ?> <media:content url="<?php echo $audio_url; ?>" fileSize="<?php echo $filesize; ?>" type="<?php echo $att->post_mime_type; ?>"> <media:description type="plain"><![CDATA[<?php echo $att->post_title; ?>]]></media:description> <media:copyright><?php echo get_the_author(); ?></media:copyright> <media:thumbnail url="<?php echo $parts[0]; ?>" width="<?php echo $parts[1]; ?>" height="<?php echo $parts[2]; ?>" /> </media:content> <?php } } }
幻灯片
要以幻灯片格式添加附加到帖子的所有图像,我们必须将一部分 HTML 代码添加到 RSS Feed 帖子内容中:
<section class="fl-slideshow"> <h1 id="My-favorite-animals">My favorite animals</h1> <figure> <img src="/static/imghwm/default1.png" data-src="puppy.jpg" class="lazy" style="max-width:90%" style="max-width:90%" alt="デフォルトの WordPress RSS フィードを拡張する" > <figcaption>Puppies are cute</figcaption> </figure> <figure> <img src="/static/imghwm/default1.png" data-src="kitten.jpg" class="lazy" style="max-width:90%" style="max-width:90%" alt="デフォルトの WordPress RSS フィードを拡張する" > <figcaption>Kittens are too</figcaption> </figure> <figure> <img src="/static/imghwm/default1.png" data-src="lamb.jpg" class="lazy" style="max-width:90%" style="max-width:90%" alt="デフォルトの WordPress RSS フィードを拡張する" > <figcaption>And baby sheep grow into ewe</figcaption> </figure> </section>
在我们的插件中添加这些行:
add_filter( 'the_content_feed', 'flipboard_slideshow' ); function flipboard_slideshow( $content ) { global $post; $attachments = get_posts( array( 'post_type' => 'attachment', 'post_mime_type' => 'image', 'posts_per_page' => -1, 'post_parent' => $post->ID, 'exclude' => get_post_thumbnail_id() ) ); if ( $attachments ) { $slide = '<section class="fl-slideshow"><h1 id="post-post-title">' . $post->post_title . '</h1>'; foreach ( $attachments as $att ) { $img_attr = wp_get_attachment_image_src( $att->ID, 'full' ); $slide .= '<figure> <img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/887/227/169380752027206.jpg?x-oss-process=image/resize,p_40" class="lazy" . $img_attr[0] . '" style="max-width:90%" . $img_attr[1] . '" height="' . $img_attr[2] . '" alt="デフォルトの WordPress RSS フィードを拡張する" > <figcaption>' . $att->post_title . '</figcaption> </figure>'; } $slide .= '</section>'; return $content . $slide; } else { return $content; } }
这就是结果:
地理信息
要显示地理信息,我们可以使用自定义字段,就像我们对 hgroup
副标题所做的那样。
因此,在“编辑帖子”页面中,添加 flipboard_geo
自定义字段,并按如下格式设置值:45.256 -71.92
(GeoRSS 文档中提供了受支持标签的完整列表)。
将这些行添加到我们的 Flipboard RSS Feed 插件中:
add_filter( 'the_content_feed', 'flipboard_geo' ); function flipboard_geo( $content ) { global $post; $flipboard_geo = get_post_meta( $post->ID, 'flipboard_geo', TRUE ); if ( $flipboard_geo ) { $geo = '<georss:poin>' . $flipboard_geo . '</georss:point>'; return $content . $geo; } else { return $content; } }
将您的 Feed 提交到 Flipboard
一旦 RSS Feed 准备就绪,您就可以请求 Flipboard 将其包含在其新闻来源中:您必须通过电子邮件联系 Flipboard 工作人员,包括您的 RSS Feed URL、Twitter、Facebook 和网站详细信息。工作人员将审核所有信息,并会在 5 个工作日内通知您。
第 3 步为 iTunes 上的播客自定义 RSS Feed
要在 Apple iTunes 上发布我们的音频或视频播客,我们需要通过新插件根据 iTunes 技术规范格式化 RSS Feed:
创建一个名为 itunes-feed.php 的新文件,打开您最喜欢的文本编辑器并粘贴以下内容:
<?php /* * Plugin Name: iTunes RSS Feed * Plugin URI: http://www.studio404.it * Description: A plugin to customize the default RSS Feed according to iTunes technical specifications. * Version: 1.0 * Author: Claudio Simeone * Author URI: http://www.studio404.it */ ?>
复制 /wp-content/plugins/ 目录中的文件并在插件管理页面中激活它。
iTunes 命名空间
要添加 iTunes 命名空间并支持 iTunes 特定元标记,我们可以使用 rss2_ns
过滤器:
add_filter( 'rss2_ns', 'itunes_namespace' ); // Add namespace function itunes_namespace() { echo 'xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"'; }
iTunes 头部标签
下一步是添加各种信息,以帮助 iTunes 更好地对商店中的提要进行分类,并显示有关您的播客频道的详细信息。
我们可以通过 rss2_head
过滤器添加所有这些信息:
add_filter( 'rss2_head', 'itunes_head' ); function itunes_head() { ?> <itunes:subtitle>A show about everything</itunes:subtitle> <itunes:author>John Doe</itunes:author> <itunes:summary>All About Everything is a show about everything...</itunes:summary> <itunes:owner> <itunes:name>John Doe</itunes:name> <itunes:email>john.doe@example.com</itunes:email> </itunes:owner> <itunes:image href="https://www.php.cn/link/4c9c3070235a7af934be4e46215c0cbc" /> <itunes:category text="Technology"> <itunes:category text="Gadgets"/> </itunes:category> <?php }
为了本教程的简洁,该示例是静态的。您可以在插件源代码中手动修改所有信息。如果您希望使其动态化,您可以创建一个选项页来处理所有这些信息(另请参阅:Ozh 的使用 register_setting() 处理 WordPress 2.8 中的插件选项)。
iTunes 帖子标签
对于每篇帖子,iTunes 都会要求添加一些额外的标签:
<itunes:author>John Doe</itunes:author> <itunes:subtitle>A short primer on table spices</itunes:subtitle> <itunes:summary>This week we talk about salt and pepper shakers...</itunes:summary> <itunes:image href="http://example.com/podcasts/everything/AllAboutEverything/Episode1.jpg" /> <enclosure url="http://example.com/podcasts/everything/AllAboutEverythingEpisode3.m4a" length="8727310" type="audio/x-m4a" /> <guid>http://example.com/podcasts/archive/aae20050615.m4a</guid> <itunes:duration>7:04</itunes:duration> <itunes:keywords>salt, pepper, shaker, exciting</itunes:keywords>
我们可以像这样处理其中一些信息:
- 作者:我们将使用帖子作者
- 副标题:我们将使用帖子的附件标题
- 摘要:我们将使用附件标题
- 持续时间:我们将使用附件说明
- 关键字:我们将使用帖子标签
写一篇新文章,添加标题、一些内容和一些标签。然后,将音频文件附加到帖子中。
文件上传后,添加其他信息:标题、说明文字,并使用说明字段指定持续时间。
将精选图片添加到帖子中,最后发布。
现在,在我们的 itunes-feed.php 插件中添加以下行:
// add support for Post Thumbnails we will use for podcast covers add_theme_support( 'post-thumbnails' ); // iTunes prefers square .jpg images that are at least 400 x 400 pixels add_image_size( 'itunes-cover', 400, 400, true ); function itunes_attached_audio() { global $post; $attachments = get_posts( array( 'post_type' => 'attachment', 'post_mime_type' => 'audio', // if you use videos, change here 'posts_per_page' => -1, 'post_parent' => $post->ID, 'exclude' => get_post_thumbnail_id() ) ); // use the post tags for itunes:keywords $itunes_keywords_arr = get_the_tags(); if ( $itunes_keywords_arr ) { foreach( $itunes_keywords_arr as $tag ) { $itunes_keywords .= $tag->name . ','; } $itunes_keywords = substr_replace( trim( $itunes_keywords ), '', -1 ); } // use the post thumb for itunes:image $post_thumbnail_id = get_post_thumbnail_id( $post->ID ); $itunes_image_arr = wp_get_attachment_image_src( $post_thumbnail_id, 'itunes-cover' ); if ( $attachments ) { foreach ( $attachments as $att ) { $audio_url = wp_get_attachment_url( $att->ID ); $parts = explode( '|', $att->post_content ); $headers = get_headers( $audio_url, 1 ); $filesize = $headers['Content-Length']; ?> <itunes:author><?php echo get_the_author(); ?></itunes:author> <itunes:subtitle><?php echo $att->post_title; ?></itunes:subtitle> <itunes:summary><?php echo $att->post_excerpt; ?></itunes:summary> <itunes:image href="<?php echo $itunes_image_arr[0]; ?>" /> <enclosure url="<?php echo $audio_url; ?>" length="<?php echo $filesize; ?>" type="<?php echo $att->post_mime_type; ?>" /> <guid><?php the_permalink(); ?></guid> <itunes:duration><?php echo $att->post_content; ?></itunes:duration> <itunes:keywords><?php echo $itunes_keywords; ?></itunes:keywords> <?php } } }
最后,发布帖子并重新加载 RSS Feed 页面源。
结论
虽然本教程仅涵盖两个主要平台,但借助 WordPress Hooks,可以自定义默认的 RSS Feed 并使其适用于其他外部 Web 应用程序。对于每篇帖子,您可以使用新的 RSS 扩展附加附加信息,也可以通过提供附加 HTML 代码来增强帖子内容,以满足您要用于发布内容的所有平台的要求。
参考文献
- Apple iTunes 示例 Feed
- GeoRSS-简单文档
- 通过 RSS Feed 在 Flipboard 上发布内容
-
WordPress 挂钩和过滤器
- WordPress 插件 API
- 关于在帖子和自定义帖子类型管理屏幕中添加自定义列中的 WordPress 挂钩
- WordPress 操作和过滤器初学者指南
以上がデフォルトの WordPress RSS フィードを拡張するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

PHPロギングは、Webアプリケーションの監視とデバッグ、および重要なイベント、エラー、ランタイムの動作をキャプチャするために不可欠です。システムのパフォーマンスに関する貴重な洞察を提供し、問題の特定に役立ち、より速いトラブルシューティングをサポートします

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ホットトピック



