Mostrando el enlace RSS de nuestros links
February 02, 06 by Max VillegasCuando editamos nuestros links en el gestor de links de WP vemos que existen unas funciones avanzadas. Entre ellas est� “RSS URI” que nos permiten agregar el feed o el canal RSS del sitio al que enlazamos. Sin embargo, por alguna raz�n desconocida, no podemos mostrar esta info en el sidebar.
Es extra�o si consideramos que en el codex de wordpress vemos que dice:
RSS is a form of syndication, used to generate WordPress Feeds. When displaying RSS links, this is the option to display the RSS link next to the site link.
http://example.com/feed/
Para conseguir esta funcionalidad entonces debemos editar y modificar el archivo wp-includes/links.php. Proucramos hacer antes una copia de seguridad del archivo en cuesti�n.
El trozo de c�digo que buscamos es este:
function get_links($category = -1, $before = '', $after = '
',
$between = ' ', $show_images = true, $orderby = 'name',
$show_description = true, $show_rating = false,
$limit = -1, $show_updated = 1, $echo = true) {
global $wpdb;
$direction = ' ASC';
$category_query = "";
if ($category != -1) {
$category_query = " AND link_category = $category ";
}
if (get_settings('links_recently_updated_time')) {
$recently_updated_test = ", IF (DATE_ADD(link_updated, INTERVAL ".get_settings('links_recently_updated_time')." MINUTE) >= NOW(), 1,0) as recently_updated ";
} else {
$recently_updated_test = '';
}
if ($show_updated) {
$get_updated = ", UNIX_TIMESTAMP(link_updated) AS link_updated_f ";
}
$orderby=strtolower($orderby);
if ($orderby == '')
$orderby = 'id';
if (substr($orderby,0,1) == '_') {
$direction = ' DESC';
$orderby = substr($orderby,1);
}
switch($orderby) {
case 'length':
$length = ",CHAR_LENGTH(link_name) AS length";
break;
case 'rand':
$orderby = 'rand()';
break;
default:
$orderby = " link_" . $orderby;
}
if (!isset($length)) {
$length = "";
}
$sql = "SELECT link_url, link_name, link_image, link_target,
link_description, link_rating, link_rel $length $recently_updated_test $get_updated
FROM $wpdb->links
WHERE link_visible = 'Y' " .
$category_query;
$sql .= ' ORDER BY ' . $orderby;
$sql .= $direction;
/* The next 2 lines implement LIMIT TO processing */
if ($limit != -1)
$sql .= " LIMIT $limit";
//echo $sql;
$results = $wpdb->get_results($sql);
if (!$results) {
return;
}
$output = "";
foreach ($results as $row) {
if (!isset($row->recently_updated)) $row->recently_updated = false;
$output .= ($before);
if ($show_updated && $row->recently_updated) {
$output .= get_settings('links_recently_updated_prepend');
}
$the_link = '#';
if ( !empty($row->link_url) )
$the_link = wp_specialchars($row->link_url);
$rel = $row->link_rel;
if ($rel != '') {
$rel = " rel='$rel'";
}
$desc = wp_specialchars($row->link_description, ENT_QUOTES);
$name = wp_specialchars($row->link_name, ENT_QUOTES);
$title = $desc;
if ($show_updated) {
if (substr($row->link_updated_f,0,2) != '00') {
$title .= ' (Last updated ' . date(get_settings('links_updated_date_format'), $row->link_updated_f + (get_settings('gmt_offset') * 3600)) .')';
}
}
if ('' != $title) {
$title = " title='$title'";
}
$alt = " alt='$name'";
$target = $row->link_target;
if ('' != $target) {
$target = " target='$target'";
}
$output.= "
$output.= $rel . $title . $target;
$output.= '>';
if (($row->link_image != null) && $show_images) {
if (strstr($row->link_image, 'http'))
$output.= "
";
else // If it's a relative path
$output.= "
link_image' $alt $title />";
} else {
$output.= $name;
}
$output.= '';
if ($show_updated && $row->recently_updated) {
$output.= get_settings('links_recently_updated_append');
}
if ($show_description && ($desc != '')) {
$output.= $between.$desc;
}
$output.= "$after\n";
} // end while
if($echo) {
echo $output;
} else {
return $output;
}
Y lo cambiamos por este otro
function get_links($category = -1, $before = '', $after = '
',
$between = ' ', $show_images = true, $orderby = 'name',
$show_description = true, $show_rating = false,
$limit = -1, $show_updated = 1, $echo = true) {
global $wpdb;
$direction = ' ASC';
$category_query = "";
if ($category != -1) {
$category_query = " AND link_category = $category ";
}
if (get_settings('links_recently_updated_time')) {
$recently_updated_test = ", IF (DATE_ADD(link_updated, INTERVAL ".get_settings('links_recently_updated_time')." MINUTE) >= NOW(), 1,0) as recently_updated ";
} else {
$recently_updated_test = '';
}
if ($show_updated) {
$get_updated = ", UNIX_TIMESTAMP(link_updated) AS link_updated_f ";
}
$orderby=strtolower($orderby);
if ($orderby == '')
$orderby = 'id';
if (substr($orderby,0,1) == '_') {
$direction = ' DESC';
$orderby = substr($orderby,1);
}
switch($orderby) {
case 'length':
$length = ",CHAR_LENGTH(link_name) AS length";
break;
case 'rand':
$orderby = 'rand()';
break;
default:
$orderby = " link_" . $orderby;
}
if (!isset($length)) {
$length = "";
}
$sql = "SELECT link_url, link_name, link_image, link_target,
link_description, link_rating, link_rel, link_rss $length $recently_updated_test $get_updated
FROM $wpdb->links
WHERE link_visible = 'Y' " .
$category_query;
$sql .= ' ORDER BY ' . $orderby;
$sql .= $direction;
/* The next 2 lines implement LIMIT TO processing */
if ($limit != -1)
$sql .= " LIMIT $limit";
//echo $sql;
$results = $wpdb->get_results($sql);
if (!$results) {
return;
}
$output = "";
foreach ($results as $row) {
if (!isset($row->recently_updated)) $row->recently_updated = false;
$output .= ($before);
if ($show_updated && $row->recently_updated) {
$output .= get_settings('links_recently_updated_prepend');
}
$the_link = '#';
if ( !empty($row->link_url) )
$the_link = wp_specialchars($row->link_url);
$rel = $row->link_rel;
if ($rel != '') {
$rel = " rel='$rel'";
}
$desc = wp_specialchars($row->link_description, ENT_QUOTES);
$name = wp_specialchars($row->link_name, ENT_QUOTES);
$title = $desc;
if ($show_updated) {
if (substr($row->link_updated_f,0,2) != '00') {
$title .= ' (Last updated ' . date(get_settings('links_updated_date_format'), $row->link_updated_f + (get_settings('gmt_offset') * 3600)) .')';
}
}
if ('' != $title) {
$title = " title='$title'";
}
$alt = " alt='$name'";
$target = $row->link_target;
if ('' != $target) {
$target = " target='$target'";
}
$output.= "
$output.= $rel . $title . $target;
$output.= '>';
if (($row->link_image != null) && $show_images) {
if (strstr($row->link_image, 'http'))
$output.= "
";
else // If it's a relative path
$output.= "
link_image' $alt $title />";
} else {
$output.= $name;
}
$output.= '';
$link_rss = $row->link_rss;
if ($link_rss != '') {
$output.= "(RSS)";
}
if ($show_updated && $row->recently_updated) {
$output.= get_settings('links_recently_updated_append');
}
if ($show_description && ($desc != '')) {
$output.= $between.$desc;
}
$output.= "$after\n";
} // end while
if($echo) {
echo $output;
} else {
return $output;
}
}
En concreto lo que hemos cambiado es lo siguiente:
link_description, link_rating, link_rel, link_rss $length $recently_updated_test $get_updated
FROM $wpdb->links
WHERE link_visible = ‘Y’ ” .
y un poco m�s abajo…
Es decir le hemos agregado el campo link_rss a la consulta y luego, si existe el RSS, lo hemos hecho visible.
Technorati tags: Tutoriales, WordPress
Posts relacionados: