我正在尝试创建一个动态抓取特定页面的所有子页面的函数。然后它将检查当前页面是什么,并抓住接下来的三个页面以显示为预览。
最后一页ID为6120。 你可以硬编码$ pagesArray()和$ lastKey和$ match来查看结果。
$pagesArray(
[0] => 6135
[1] => 6139
[2] => 6176
[3] => 6178
[4] => 6163
[5] => 6152
[6] => 6167
[7] => 6183
[8] => 6201
[9] => 6190
[10] => 6172
[11] => 6197
[12] => 6205
[13] => 6154
[14] => 6120
);
$lastKey = 14;
$matches = 14;
当我转到最后一页时,页面ID是6120,这是数组的第14个ID。 它应返回前3页ID,但不会匹配。请帮忙。这是代码。 作为参考,$ matches == $ lastKey应该是我设置$ nextPagesArray()的条件的一部分。它们都是14,但它不匹配。
function getNext3PortfolioPages(){
global $post;
$currentPage = $post->ID;
$last = '';
$lastKey = '';
$pagesArray = array();
$nextPagesArray = array();
$args = array(
'child_of' => '6115',
'offset' => $post->ID
);
// get all the page id's that are children of page 6115
$result = get_pages($args);
// add the page id's to the $pagesArray
foreach ( $result as $page ){
array_push($pagesArray, $page->ID);
}
//find the last page id in the array
$last = end($pagesArray);
// find the index of the last array value
$lastKey = key($pagesArray);
// find the index of the current page displayed
$matches = array_search($currentPage, $pagesArray);
// check to see if the current page index is the same as the end of the array
// and set up the $nextPagesArray with the next 3
if ( (int)$matches == (int)$lastkey ) {
//print_r('1');
//print_r($pagesArray);
array_push($nextPagesArray, $pagesArray[0]);
array_push($nextPagesArray, $pagesArray[1]);
array_push($nextPagesArray, $pagesArray[2]);
} elseif ( $matches == $lastkey - 1 ) {
//print_r('2');
array_push($nextPagesArray, $pagesArray[$lastKey]);
array_push($nextPagesArray, $pagesArray[0]);
array_push($nextPagesArray, $pagesArray[1]);
} elseif ( $matches == $lastkey - 2 ) {
//print_r('3');
array_push($nextPagesArray, $pagesArray[$lastKey - 1]);
array_push($nextPagesArray, $pagesArray[$lastKey]);
array_push($nextPagesArray, $pagesArray[0]);
} else {
//print_r('4');
array_push($nextPagesArray, $pagesArray[$matches + 1]);
array_push($nextPagesArray, $pagesArray[$matches + 2]);
array_push($nextPagesArray, $pagesArray[$matches + 3]);
}
return $nextPagesArray;
}
答案 0 :(得分:2)
如果你想让你的阵列绕过"可以这么说,您可以使用前三个元素扩展您的数组:
输入:
$pages=[6135,6139,6176,6178,6163,6152,6167,6183,6201,6190,6172,6197,6205,6154,6120];
方法(Demo):
$extended_pages=array_merge($pages,array_slice($pages,0,3));
if($x=array_search(6120,$pages)){
$next3=array_slice($extended_pages,$x+1,3);
var_export($next3);
}
输出:
array (
0 => 6135,
1 => 6139,
2 => 6176,
)
这将节省您必须进行一系列条件检查,无论搜索中使用的页码如何,它都将起作用(当然,只要数组中存在页码)。