Hallo,
ich habe ein Problem mit meiner Zufallsanzeige auf meinem Blog "http://www.bodycontest.de". Dort wollte ich im unteren Bereich eine Art Anregung schaffen. Es sollten dort jeweils 3 zufällige Beiträge aus einer bestimmen Kategorie angezeigt werden, um die Leser dazu zu animieren, weitere Artikel zu lesen. Mein Theme "Chicago Pro" (die kostenpflichtige Variante vom Theme "Chicago") kann dies schon fast. Allerdings werden statt der zufälligen Artikel, immer die letzten 3 aktuellen Artikel angezeigt. Der Code der dafür zuständig ist, lautet wie folgt:
if ( ! function_exists( 'chicago_category_content' ) ) :
/**
* This function to display featured category content
*
* @since Chicago 1.0
*/
function chicago_category_content() {
global $post;
$quantity = get_theme_mod( 'featured_content_number', chicago_get_default_theme_options( 'featured_content_number' ) );
$category_list = get_theme_mod( 'featured_content_select_category', chicago_get_default_theme_options( 'featured_content_select_category' ) );
$chicago_category_content = '';
$get_featured_posts = new WP_Query( array(
'posts_per_page' => $quantity,
'category__in' => $category_list,
'ignore_sticky_posts' => 1 /* ignore sticky posts */
));
$show_content = get_theme_mod( 'featured_content_show', chicago_get_default_theme_options( 'featured_content_show' ) );
$i=0;
while ( $get_featured_posts->have_posts()) : $get_featured_posts->the_post(); $i++;
$title_attribute = the_title_attribute( array( 'before' => __( 'Permalink to: ', 'chicago-pro' ), 'echo' => false ) );
$excerpt = get_the_excerpt();
$chicago_category_content .= '
<article id="featured-post-' . $i . '" class="post hentry featured-category-content">';
if ( has_post_thumbnail() ) {
$chicago_category_content .= '
<figure class="featured-homepage-image">
<a href="' . get_permalink() . '" title="'.the_title( '', '', false ).'">
'. get_the_post_thumbnail( $post->ID, 'chicago-single', array( 'title' => esc_attr( $title_attribute ), 'alt' => esc_attr( $title_attribute ), 'class' => 'pngfix' ) ) .'
</a>
</figure>';
echo get_post(get_post_thumbnail_id())->post_excerpt;
}
else {
$chicago_first_image = chicago_get_first_image( $post->ID, 'chicago-single', array( 'title' => esc_attr( $title_attribute ), 'alt' => esc_attr( $title_attribute ), 'class' => 'pngfix' ) );
if ( '' != $chicago_first_image ) {
$chicago_category_content .= '
<figure class="featured-homepage-image">
<a href="' . get_permalink() . '" title="'.the_title( '', '', false ).'">
'. $chicago_first_image .'
</a>
</figure>';
}
}
$chicago_category_content .= '
<div class="entry-container">
<header class="entry-header">
<h1 class="entry-title">
<a href="' . get_permalink() . '" rel="bookmark">' . the_title( '','', false ) . '</a>
</h1>
</header>';
if ( 'excerpt' == $show_content ) {
$chicago_category_content .= '<div class="entry-excerpt"><p>' . $excerpt . '</p></div><!-- .entry-excerpt -->';
}
elseif ( 'full-content' == $show_content ) {
$content = apply_filters( 'the_content', get_the_content() );
$content = str_replace( ']]>', ']]>', $content );
$chicago_category_content .= '<div class="entry-content">' . $content . '</div><!-- .entry-content -->';
}
$chicago_category_content .= '
</div><!-- .entry-container -->
</article><!-- .featured-post-'. $i .' -->';
endwhile;
wp_reset_query();
return $chicago_category_content;
}
endif; // chicago_category_content
Alles anzeigen
Ich bin leider nur ein Hobbyschreiber und kein Programmierer, daher verstehe ich nicht alles. Aber so grob kann ich verstehen was in dem Code passiert und gehe davon aus das der folgende Teil für die Auswahl der Texte zuständig ist:
$quantity = get_theme_mod( 'featured_content_number', chicago_get_default_theme_options( 'featured_content_number' ) );
$category_list = get_theme_mod( 'featured_content_select_category', chicago_get_default_theme_options( 'featured_content_select_category' ) );
$chicago_category_content = '';
$get_featured_posts = new WP_Query( array(
'posts_per_page' => $quantity,
'category__in' => $category_list,
'ignore_sticky_posts' => 1 /* ignore sticky posts */
));
Alles anzeigen
Die Auswahl der Kategorie und Anzahl der Artikel kann man im Theme einstellen, ich gehe davon aus das dazu die Variablen quantity und category_list zuständig sind. Darum habe ich den Code wie folgt abgeändert:
/* $quantity = get_theme_mod( 'featured_content_number', chicago_get_default_theme_options( 'featured_content_number' ) );
$category_list = get_theme_mod( 'featured_content_select_category', chicago_get_default_theme_options( 'featured_content_select_category' ) );
*/
$chicago_category_content = '';
$get_featured_posts = new WP_Query( array(
'posts_per_page' => 3,
'cat' => 60,
'orderby' => 'rand',
));
Alles anzeigen
Ich habe also die Bildung der Variablen oben deaktiviert und dann unten feste Werte eingetragen und die Sortierung per Zufall aktiviert. Die zufällige Anzeige der Artikel klappt nun, allerdings mit einer sehr bescheidenen Einschränkung. Denn es werden nur zufällige Artikel angezeigt so lange der Customizer von Wordpress aktiv ist. Siehe Bild
http://www.bodycontest.de/custom.png
Ich vermute das es was mit der Funktion auf der linken Seite zu tun hat, die bei Pfeil 1 angezeigt wird. Ich bin mir da aber nicht sicher. Darum wollte ich hier mal um Rat fragen. Vielleicht hat ja jemand eine Idee wie ich das Problem beheben kann, damit die Artikel immer zufällig angezeigt werden, auch wenn der Customizer geschlossen ist. Falls weitere Daten nötig sein sollten, lade ich gerne noch was hoch oder verlinke es.