Add support for automatic feed links in themes, props Viper007Bond, see #8878
git-svn-id: http://svn.automattic.com/wordpress/trunk@10377 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
6f0c0a1092
commit
3949fb7e90
|
@ -3,6 +3,9 @@
|
|||
* @package WordPress
|
||||
* @subpackage Classic_Theme
|
||||
*/
|
||||
|
||||
automatic_feed_links();
|
||||
|
||||
if ( function_exists('register_sidebar') )
|
||||
register_sidebar(array(
|
||||
'before_widget' => '<li id="%1$s" class="widget %2$s">',
|
||||
|
|
|
@ -16,10 +16,6 @@
|
|||
@import url( <?php bloginfo('stylesheet_url'); ?> );
|
||||
</style>
|
||||
|
||||
<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="<?php bloginfo('rss2_url'); ?>" />
|
||||
<link rel="alternate" type="text/xml" title="RSS .92" href="<?php bloginfo('rss_url'); ?>" />
|
||||
<link rel="alternate" type="application/atom+xml" title="Atom 1.0" href="<?php bloginfo('atom_url'); ?>" />
|
||||
|
||||
<link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />
|
||||
<?php wp_get_archives('type=monthly&format=link'); ?>
|
||||
<?php //comments_popup_script(); // off by default ?>
|
||||
|
|
|
@ -4,13 +4,16 @@
|
|||
* @subpackage Default_Theme
|
||||
*/
|
||||
|
||||
if ( function_exists('register_sidebar') )
|
||||
automatic_feed_links();
|
||||
|
||||
if ( function_exists('register_sidebar') ) {
|
||||
register_sidebar(array(
|
||||
'before_widget' => '<li id="%1$s" class="widget %2$s">',
|
||||
'after_widget' => '</li>',
|
||||
'before_title' => '<h2 class="widgettitle">',
|
||||
'after_title' => '</h2>',
|
||||
));
|
||||
}
|
||||
|
||||
/** @ignore */
|
||||
function kubrick_head() {
|
||||
|
|
|
@ -13,8 +13,6 @@
|
|||
<title><?php wp_title('«', true, 'right'); ?> <?php bloginfo('name'); ?></title>
|
||||
|
||||
<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen" />
|
||||
<link rel="alternate" type="application/rss+xml" title="<?php bloginfo('name'); ?> RSS Feed" href="<?php bloginfo('rss2_url'); ?>" />
|
||||
<link rel="alternate" type="application/atom+xml" title="<?php bloginfo('name'); ?> Atom Feed" href="<?php bloginfo('atom_url'); ?>" />
|
||||
<link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />
|
||||
|
||||
<style type="text/css" media="screen">
|
||||
|
|
|
@ -164,6 +164,7 @@ add_filter( 'editable_slug', 'urldecode' );
|
|||
add_filter('atom_service_url','atom_service_url_filter');
|
||||
|
||||
// Actions
|
||||
add_action('wp_head', 'feed_links_extra', 3);
|
||||
add_action('wp_head', 'rsd_link');
|
||||
add_action('wp_head', 'wlwmanifest_link');
|
||||
add_action('wp_head', 'locale_stylesheet');
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* @package WordPress
|
||||
*/
|
||||
|
||||
header('Content-Type: application/atom+xml; charset=' . get_option('blog_charset'), true);
|
||||
header('Content-Type: ' . feed_content_type('atom') . '; charset=' . get_option('blog_charset'), true);
|
||||
echo '<?xml version="1.0" encoding="' . get_option('blog_charset') . '" ?' . '>';
|
||||
?>
|
||||
<feed
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* @package WordPress
|
||||
*/
|
||||
|
||||
header('Content-Type: application/atom+xml; charset=' . get_option('blog_charset'), true);
|
||||
header('Content-Type: ' . feed_content_type('atom') . '; charset=' . get_option('blog_charset'), true);
|
||||
$more = 1;
|
||||
|
||||
?>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* @package WordPress
|
||||
*/
|
||||
|
||||
header('Content-Type: application/rdf+xml; charset=' . get_option('blog_charset'), true);
|
||||
header('Content-Type: ' . feed_content_type('rdf') . '; charset=' . get_option('blog_charset'), true);
|
||||
$more = 1;
|
||||
|
||||
?>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* @package WordPress
|
||||
*/
|
||||
|
||||
header('Content-Type: text/xml; charset=' . get_option('blog_charset'), true);
|
||||
header('Content-Type: ' . feed_content_type('rss') . '; charset=' . get_option('blog_charset'), true);
|
||||
$more = 1;
|
||||
|
||||
?>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* @package WordPress
|
||||
*/
|
||||
|
||||
header('Content-Type: text/xml;charset=' . get_option('blog_charset'), true);
|
||||
header('Content-Type: ' . feed_content_type('rss2') . '; charset=' . get_option('blog_charset'), true);
|
||||
|
||||
echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>';
|
||||
?>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* @package WordPress
|
||||
*/
|
||||
|
||||
header('Content-Type: text/xml; charset=' . get_option('blog_charset'), true);
|
||||
header('Content-Type: ' . feed_content_type('rss2') . '; charset=' . get_option('blog_charset'), true);
|
||||
$more = 1;
|
||||
|
||||
?>
|
||||
|
|
|
@ -508,4 +508,27 @@ function self_link() {
|
|||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the content type for specified feed type.
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Feed
|
||||
* @since 2.8.0
|
||||
*/
|
||||
function feed_content_type( $type = '' ) {
|
||||
if ( empty($type) )
|
||||
$type = get_default_feed();
|
||||
|
||||
$types = array(
|
||||
'rss' => 'application/rss+xml',
|
||||
'rss2' => 'application/rss+xml',
|
||||
'atom' => 'application/atom+xml',
|
||||
'rdf' => 'application/rdf+xml',
|
||||
);
|
||||
|
||||
$content_type = ( !empty($types[$type]) ) ? $types[$type] : 'application/octet-stream';
|
||||
|
||||
return apply_filters( 'feed_content_type', $content_type, $type );
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
|
@ -1368,6 +1368,88 @@ function wp_footer() {
|
|||
do_action('wp_footer');
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable/disable automatic general feed link outputting.
|
||||
*
|
||||
* @since 2.8.0
|
||||
*
|
||||
* @param boolean $add Add or remove links. Defaults to true.
|
||||
*/
|
||||
function automatic_feed_links( $add = true ) {
|
||||
if ( $add )
|
||||
add_action( 'wp_head', 'feed_links', 2 );
|
||||
else {
|
||||
remove_action( 'wp_head', 'feed_links', 2 );
|
||||
remove_action( 'wp_head', 'feed_links_extra', 3 );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the links to the general feeds.
|
||||
*
|
||||
* @since 2.8.0
|
||||
*
|
||||
* @param array $args Optional arguments.
|
||||
*/
|
||||
function feed_links( $args ) {
|
||||
$defaults = array(
|
||||
'seperator' => _c('»|Seperator character feed titles in theme head'),
|
||||
'rsstitle' => __('%s Feed'),
|
||||
'comstitle' => __('%s Comments Feed'),
|
||||
);
|
||||
|
||||
$args = wp_parse_args( $args, $defaults );
|
||||
|
||||
echo '<link rel="alternate" type="' . feed_content_type() . '" title="' . sprintf( $args['rsstitle'], get_bloginfo('name') ) . '" href="' . get_feed_link() . "\" />\n";
|
||||
echo '<link rel="alternate" type="' . feed_content_type() . '" title="' . sprintf( $args['comstitle'], get_bloginfo('name') ) . '" href="' . get_feed_link( 'comments_' . get_default_feed() ) . "\" />\n";
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the links to the extra feeds such as category feeds.
|
||||
*
|
||||
* @since 2.8.0
|
||||
*
|
||||
* @param array $args Optional arguments.
|
||||
*/
|
||||
function feed_links_extra( $args ) {
|
||||
$defaults = array(
|
||||
'seperator' => _c('»|Seperator character feed titles in theme head'),
|
||||
'singletitle' => __('%1$s %2$s %3$s Comments Feed'),
|
||||
'cattitle' => __('%1$s %2$s %3$s Category Feed'),
|
||||
'tagtitle' => __('%1$s %2$s %3$s Tag Feed'),
|
||||
'authortitle' => __('%1$s %2$s Posts by %3$s Feed'),
|
||||
'searchtitle' => __('%1$s %2$s Search Results for "%3$s" Feed'),
|
||||
);
|
||||
|
||||
$args = wp_parse_args( $args, $defaults );
|
||||
|
||||
if ( is_single() || is_page() ) {
|
||||
$post = &get_post( $id = 0 );
|
||||
if ( comments_open() || pings_open() || $post->comment_count > 0 )
|
||||
echo '<link rel="alternate" type="' . feed_content_type() . '" title="' . sprintf( $args['singletitle'], get_bloginfo('name'), $args['seperator'], get_the_title() ) . '" href="' . get_post_comments_feed_link( $post->ID ) . "\" />\n";
|
||||
}
|
||||
|
||||
elseif ( is_category() ) {
|
||||
$cat_id = intval( get_query_var('cat') );
|
||||
echo '<link rel="alternate" type="' . feed_content_type() . '" title="' . sprintf( $args['cattitle'], get_bloginfo('name'), $args['seperator'], get_cat_name( $cat_id ) ) . '" href="' . get_category_feed_link( $cat_id ) . "\" />\n";
|
||||
}
|
||||
|
||||
elseif ( is_tag() ) {
|
||||
$tag_id = intval( get_query_var('tag_id') );
|
||||
$tag = get_tag( $tag_id );
|
||||
echo '<link rel="alternate" type="' . feed_content_type() . '" title="' . sprintf( $args['tagtitle'], get_bloginfo('name'), $args['seperator'], $tag->name ) . '" href="' . get_tag_feed_link( $tag_id ) . "\" />\n";
|
||||
}
|
||||
|
||||
elseif ( is_author() ) {
|
||||
$author_id = intval( get_query_var('author') );
|
||||
echo '<link rel="alternate" type="' . feed_content_type() . '" title="' . sprintf( $args['authortitle'], get_bloginfo('name'), $args['seperator'], get_author_name( $author_id ) ) . '" href="' . get_author_feed_link( $author_id ) . "\" />\n";
|
||||
}
|
||||
|
||||
elseif ( is_search() ) {
|
||||
echo '<link rel="alternate" type="' . feed_content_type() . '" title="' . sprintf( $args['searchtitle'], get_bloginfo('name'), $args['seperator'], get_search_query() ) . '" href="' . get_search_feed_link() . "\" />\n";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the link to the Really Simple Discovery service endpoint.
|
||||
*
|
||||
|
|
|
@ -507,7 +507,7 @@ function get_category_feed_link($cat_id, $feed = '') {
|
|||
$permalink_structure = get_option('permalink_structure');
|
||||
|
||||
if ( '' == $permalink_structure ) {
|
||||
$link = get_option('home') . "?feed=$feed&cat=" . $cat_id;
|
||||
$link = trailingslashit( get_option('home') ) . "?feed=$feed&cat=" . $cat_id;
|
||||
} else {
|
||||
$link = get_category_link($cat_id);
|
||||
if( $feed == get_default_feed() )
|
||||
|
|
Loading…
Reference in New Issue