Hallo,
Ich habe ein kleines Problem mit einer meiner Webseiten Shogun-Magazin - Martial Arts > Entertainment > Lifestyle
Wordpress 2.5.1 DE-Editon
Thema: Tiga
Das Thema hat einen NavBar, der ausgeblendet werden sollte, wenn dies nicht notwendig ist. Dazu wird die Anzahl der posts durch die Anzahl der max. Posts pro Seite dividiert. z.B. 6 Posts, max. 10 pro Seite.
6/10 = 0.6 (aufgerundet 1) sobald das Ergebnis grösser 1 ist sollte der NavBar angezeigt werden ansonsten nicht, aber er wird IMMER angezeigt auch wenn dies nicht notwendig wäre und das sieht nicht hübsch aus, wenn da nur ein leerer Balken mit einem | zu sehen ist!
Inhalt $request:
SELECT SQL_CALC_FOUND_ROWS wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private') ORDER BY wp_posts.post_date DESC LIMIT 0, 10
[COLOR=Red]Da kommt gar kein 'GROUP BY' vor ! [/COLOR][COLOR=Blue]so sollte es wohl aussehen: preg_match('#FROM (.*) LIMIT#', $request, $matches);[/COLOR]
<?php
global $wpdb, $posts_per_page, $fromwhere, $matches, $max_num_pages,
$request, $posts_per_page;
if (! is_single()) { // nur wenn die Seite nicht als Single Page angezeigt wird.
if (get_query_var('what_to_show') == 'posts') { // Ich glaube da liegt schon mal ein Fehler, get_query_var ist IMMER leer und somit wird das was danach kommt gar nicht mehr ausgeführt!
if ( ! isset($max_num_pages) ) {
preg_match('#FROM (.*) GROUP BY#', $request, $matches); //das dürfte auch falsch sein, siehe Inhalt $request.
$fromwhere = $matches[1];
$numposts = $wpdb->get_var("SELECT COUNT(ID) FROM $fromwhere");
$max_num_pages = ceil($numposts / $posts_per_page);
}
} else {
$max_num_pages = 999999;
}
if ($max_num_pages > 1) { // dieser Teil sollte nur angezeigt werden wenn es notwendig ist!
?>
<div class="center-widget">
<div class="bottom-page-nav">
<?php posts_nav_link('', '', _t('« Previous Entries')); ?>
<strong> | </strong>
<?php posts_nav_link('', _t('Next Entries »'), ''); ?>
</div>
</div> <!-- center-widget -->
<?php
}
}
?>
Alles anzeigen
Ich habe das jetzt mal so gelöst:
if (! is_single()) {
// if (get_query_var('what_to_show') == 'posts') {
if ( ! isset($max_num_pages) ) {
preg_match('#FROM (.*) LIMIT#', $request, $matches); // RegEx geändert!
$fromwhere = $matches[1];
$numposts = $wpdb->get_var("SELECT COUNT(ID) FROM $fromwhere");
$max_num_pages = ceil($numposts / $posts_per_page);
}
// } else {
// $max_num_pages = 999999;
// }
if ($max_num_pages > 1) {
Alles anzeigen
Vielleicht kann man das aber auch ganz anders oder einfacher lösen ?
lg
Merlin