add_feed() WP 2.1.0

Додає новий тип RSS стрічки на кшталт /atom1/ .

Функція додає правила перезапису (ЧПУ) та реєструє хук на основі зазначеної функції фіда.

Хуків немає.

Повертає

Строку. Ім’я хука створеного фіда.

Використання

add_feed($feedname, $callable);
$feedname
(string)
Ім’я (склад) нової RSS стрічки.
$callable
(callable)
Колбек, що виводить розмітку фіда.

Приклади

0

#1 Створення власної RSS-стрічки

<?php

add_action( 'init', function(){
	add_feed( 'my_feed', 'my_feed_markup');
});

function my_feed_markup(){
	do_action( 'my_before_feed');
	header( 'Content-Type: ' . feed_content_type( 'rss' ) . '; charset=' . get_option( 'blog_charset' ), true );
	status_header(200);
	echo '<?xml version="1.0" encoding="UTF-8"?>';
	?>

	<rss version="2.0"
		 xmlns:content="http://purl.org/rss/1.0/modules/content/"
		 xmlns:wfw="http://wellformedweb.org/CommentAPI/"
		 xmlns:dc="http://purl.org/dc/elements/1.1/"
		 xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		 xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>
		<channel>
			<title>example.com</title>
			<link>
			http://example.com/my_feed</link>
			<description>My new feed</description>
			<lastBuildDate>Tue, 28 Feb 2017 13:00:41 +0000</lastBuildDate>
			<language>ru-RU</language>
			<sy:updatePeriod>hourly</sy:updatePeriod>
			<sy:updateFrequency>1</sy:updateFrequency>
			<item>
				<title>Hello world text</title>
				<pubDate>Tue, 28 Feb 2017 13:00:41 +0000</pubDate>
				<description><![CDATA[<p></p> Hello World</a> ]]></description>
			</item>
		</channel>
	</rss>
	<?php
	exit;
}

нотатки

  • Global. WP_Rewrite. $wp_rewrite WordPress rewrite component.

список змін

З версії 2.1.0Введено.

Код add_feed() WP 6.0.2

function add_feed( $feedname, $function ) {
	global $wp_rewrite;

	if ( ! in_array( $feedname, $wp_rewrite->feeds, true ) ) {
		$wp_rewrite->feeds[] = $feedname;
	}

	$hook = 'do_feed_'. $feedname;

	// Remove default function hook.
	remove_action($hook, $hook);

	add_action($hook, $function, 10, 2);

	return $hook;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *