Hallo zusammen!
bei mir auf dem Blog läuft noch die gute alte Rocking Blogroll.
Folgender Code ist dort vorhanden
PHP
function tp_show_blogroll_rss_links( $args = array() ) {
$default_args = array (
'show_items' => -1 ,
'category' => 0,
'item_order' => 'link_name ASC',
'older_than' => 168,
'show_date' => 0,
'show_image' => 'show-no-images',
'thumb_size' => 50,
'show_summary' => 1,
'summary_length' => 100);
$args = wp_parse_args( $args, $default_args );
extract( $args );
$show_items = (int) $show_items;
$category = (int) $category;
$older_than = (int) $older_than;
$show_date = (int) $show_date;
$thumb_size = (int) $thumb_size;
$show_summary = (int) $show_summary;
$summary_length = (int) $summary_length;
global $wpdb;
if ( $category != 0 )
$qu_cat_t = " AND tt.term_id = $category ";
//zum Ausrechnen nur Links, deren letzter Artikel innerhalb der letzten 48 Stunden geschrieben wurde
date_default_timezone_set("Europe/Berlin");
$datum = date("Y-m-d H:i",mktime(date(H)-$older_than,date(i),1,date(m),date(d),date(Y)));
$queryString = "
SELECT link_url, link_name, link_image, link_target, link_description, link_last_post_url, link_last_post_title, link_last_post_excerpt, link_last_post_date FROM $wpdb->links
INNER JOIN $wpdb->term_relationships AS tr ON ($wpdb->links.link_id = tr.object_id)
INNER JOIN $wpdb->term_taxonomy as tt ON tt.term_taxonomy_id = tr.term_taxonomy_id
WHERE $wpdb->links.link_visible = 'Y'
AND $wpdb->links.link_rss != ''
AND $wpdb->links.link_last_post_url != ''
AND $wpdb->links.link_last_post_date >= '$datum'
AND tt.taxonomy = 'link_category'
$qu_cat_t
Order by $item_order";
if ( $show_items != -1)
$queryString .= " LIMIT $show_items";
$blr_links = $wpdb->get_results($queryString);
echo '<ul>';
foreach ($blr_links as $blr_link) :
echo '<li style="list-style-type:none">';
//Bilder Anzeige
if ($show_image != "show-no-images") {
if ( $show_image == "show-my-own-images" && $blr_link->link_image != "" ) {
echo '<div style="float:left; margin:3px 3px 3px 0;">
<img style="width:'.$thumb_size.'px;"
src="'.$blr_link->link_image.'" alt="'.$blr_link->link_name.'" title="'.$blr_link->link_name.'" />
</div>';
}
if ( $show_image == "create-thumbnails" ) {
echo '<div style="float:left; margin:3px 13px 3px 0;">
<img
src="https://thumber.de/image/?size=S&url='.$blr_link->link_url.'" class="rounded"
alt="'.$blr_link->link_name.'" title="'.$blr_link->link_name.'"/>
</div>';
}
}
//Blogroll Link
echo '<b><a target="'.$blr_link->link_target.'" ';
echo 'href="'.$blr_link->link_url.'" title="'.$blr_link->link_description.'">'.$blr_link->link_name.'</a></b><br />';
//Link letzter Artikel
echo '<a target="'.$blr_link->link_target.'" ';
echo 'href="'.$blr_link->link_last_post_url.'" title="'.$blr_link->link_last_post_title.'">'.$blr_link->link_last_post_title.'</a>';
//Feed Auszug
if ($show_summary) {
$blr_excerpt = wp_specialchars_decode($blr_link->link_last_post_excerpt);
$desc = t_s_b_r_l_shorten($blr_excerpt,$summary_length);
echo ': <cite>'.$desc;
if ($show_date) {
$blr_date = $blr_link->link_last_post_date;
$blr_date = date("d.m.Y H:i",strtotime($blr_date));
echo ' ('.$blr_date.')';
}
echo '</cite><br /><br />';
}
if ( $show_image != "show-no-images" ) {
echo '<div style="clear:both;"></div></li>';
} else {
echo '</li>';
}
endforeach;
echo '</ul>';
if ( $show_image == "create-thumbnails") {
echo'<br /><p class="zentriert">
<a target="_blank" href="https://thumber.de" title="Thumbshots by Thumber.de">Thumber.de</a></p>';
}
}
Alles anzeigen
Mit folgendem Code soll die Blogroll eigentlich einmal pro Stunde via Cronjob aktualisiert werden.
PHP
include 'xxx/wp-blog-header.php';
global $wpdb;
$blr_query = ( " SELECT link_id, link_rss FROM $wpdb->links
WHERE link_rss != '' " );
$blr_result = $wpdb->get_results($blr_query);
if ( !empty($blr_result) ) {
add_filter( 'wp_feed_cache_transient_lifetime', create_function( '$a', 'return 1800;' ) );
include_once(ABSPATH . WPINC . '/feed.php');
echo "<ol>";
foreach ( $blr_result as $link ) :
$blr_url = esc_attr($link->link_rss);
$blr_rss = fetch_feed($blr_url);
if ( is_wp_error($blr_rss) ) {
unset($blr_rss);
continue;
} else {
$blr_rss_items = $blr_rss->get_items( 0, $blr_rss->get_item_quantity(1) );
foreach ( $blr_rss_items as $item ) :
$blr_feed_url = $item->get_permalink();
$blr_feed_title = $item->get_title();
$blr_feed_excerpt = $item->get_description();
$blr_feed_date = $item->get_date("Y-m-d H:i:s");
$blr_insert_furl = $wpdb->escape($blr_feed_url);
$blr_insert_ftitle = $wpdb->escape($blr_feed_title);
$blr_insert_fexcerpt = $wpdb->escape($blr_feed_excerpt);
$blr_id = $link->link_id;
date_default_timezone_set("Europe/Berlin");
$blr_time = date("Y-m-d H:i:s");
$wpdb->update ( $wpdb->links,
array( 'link_last_post_url' => $blr_insert_furl, 'link_last_post_title' => $blr_insert_ftitle, 'link_last_post_excerpt' => $blr_insert_fexcerpt, 'link_last_post_date' => $blr_feed_date, 'link_last_update_gmt' => $blr_time ),
array( 'link_id' => $blr_id )
);
echo "<li>Erfolgreicher Update des letzten Feedartikel für Link ID = ".$blr_id.", Zeitstempel: ".$blr_time."</li>";
endforeach;
remove_filter( 'wp_feed_cache_transient_lifetime', create_function( '$a', 'return 1800;' ) );
}
endforeach;
echo "</ol>";
}
Alles anzeigen
Diese automatische Aktualisierung erfolgt aber nicht.
Das Problem ist: rufe ich die Datei als angemeldeter Benutzer auf, kann ich die Blogroll erfolgreich aktualisieren. Bin ich nicht angemeldet, gibt es einen 404-Error.
Jemand eine Idee, woran das liegen könnte?
Es gibt im übrigen von der Plugin-Autorin, Tanja Preuße, die Erlaubnis, den Code frei zu verwenden und anzupassen.