我一直在使用以下功能(手动更新ID)来分组父项(&P);将子页放入数组中,然后在if/else语句中使用该数组来显示内容,具体取决于当前页是否在该数组中。示例如下:
function id_array_function() {
$array = array(
10, // Example Parent ID
12, // Example Child ID
14 // Example Child ID
);
return $array;
}
function content_placement_function() {
if( is_page( id_array_example() ) ) {
// If current page is in array, do this
}
else {
// Otherwise, do this
}
}
理想情况下,我希望创建一个可重用的函数,可以将任何页面名称插入其中(避免由于本地/生产安装具有不同页面ID的问题而使用ID),并返回一个父页面名称和任何子页面名称的数组,以便在其他地方使用,例如:
if( is_page( id_array_function(\'About\') ) ) {
// Function would return array as (\'About\', \'Our Company\', \'Careers\', \'etc...\')
// If current page is in array, do this
}
我曾尝试使用wp\\u list\\u页面(无法返回,只有echo)和get\\u posts/get\\u terms(都返回了空数组)进行此操作。如果有人对我如何实现可重用功能有一个现成的代码片段或想法,我将非常感谢您的帮助。
==========
编辑:下面是Krzysiek的工作答案。CSS技巧上可能的替代选项(针对ID):https://css-tricks.com/snippets/wordpress/if-page-is-parent-or-child/
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成
好的,我们要实现的是编写一个函数,该函数将获取页面的标题,并返回包含其ID及其子级ID的数组。下面是代码:
function get_page_and_its_children_ids_by_title( $page_title ) {
$result = array();
$page = get_page_by_title( $page_title ); // find page with given title
if ( $page ) { // if that page exists
$result[] = $page->ID; // add its ID to the result
$children = get_children( array( // get its children
\'post_parent\' => $page->ID,
\'post_type\' => \'page\',
\'numberposts\' => -1,
\'post_status\' => \'publish\'
) );
$result = array_merge( $result, array_keys( $children ) ); // add children ids to the result
}
return $result;
}