2017-04-13 1 views
1

In WordPress, ich versuche, aktuelle ID einer Zeile und eine nächste ID der nächsten Zeile zu erhalten.In Wordpress foreach Schleife, zurück aktuelle Zeile ID und nächste/vorherige Zeile ID

Beispiel Datenbank:

----------------------------- 
    | id | book | orderby | 
    ----------------------------- 
    | 3 | b |  1 | 
    ----------------------------- 
    | 1 | f |  2 | 
    ----------------------------- 
    | 2 | g |  3 | 
    ----------------------------- 

Code:

$entries = $wpdb->get_results("SELECT * FROM ".$wpdb->prefix."_books" ORDER BY orderby ASC); 
foreach ($entries as $print){ 
    $prev = //on second row this would be 3 
    $current = $print->id //on second row this would be 1 
    $next = //on second row this would be 2 
} 

ich in keiner Weise Wordpress denken, Sie würden nur Array-Schlüssel in der Schleife erhöhen oder verringern. Es ist prolly einfach zu beheben.

+0

'var_dump ($ Einträge)' - Ich schätze, dass Sie ein Array haben? – Tom

+0

ja, es ist Array – user1203497

+1

Gibt es einen Grund, warum Sie '$ wpdb-> get_results' anstelle von' WP_Query' oder sogar 'get_posts' verwenden? – Frits

Antwort

2

Sie so etwas wie die folgenden verwenden:

<?php 

$entries = $wpdb->get_results("SELECT * FROM ".$wpdb->prefix."_books ORDER BY orderby ASC"); 
$entries = array_values($entries); //shouldn't be needed, but used just in case wordpress returns a non-incrementing key structure for whatever reason 

foreach ($entries as $k=>$v) { 
    if (isset($entries[$k - 1])) { 
     $prev = $entries[$k - 1]->id; 
    } 
    else { 
     $prev = null; 
    } 

    $current = $v->id; 

    if (isset($entries[$k + 1])) { 
     $next = $entries[$k + 1]->id; 
    } 
    else { 
     $next = null; 
    } 
} 

?> 
+0

Ja, das funktioniert. Vielen Dank! – user1203497

+0

+1 - das ist fast genau das, was ich erreichen wollte, aber Sie haben mich dazu geschlagen. Tippe beim nächsten Mal vielleicht etwas langsamer;) gute Arbeit! – Frits