我在模板中遇到了一些php代码。
我有一个名为“services”的自定义字段,其值为“2402、2366、78”,这些是页面ID。
在我的模板中,我想执行以下操作:获取页面ID 2526的所有子级。然后为每个子级获取该自定义字段的值。然后获取模板正在用于的当前页面的ID(get_the_ID())。然后创建一个IF语句。如果值中的数字与页面ID的数字匹配,则回显某个内容,并使用指向ID 2526的子页面的链接包装回显文本,该子页面的自定义字段的值与当前页面ID匹配。
如果没有逗号比较容易,我也可以输入值2402 2366 78。
这就是我目前所处的位置:
<?php
$currentPageID = get_the_ID();
$child_pages = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_parent = 2526 AND post_type = \'page\' ORDER BY menu_order", \'OBJECT\');
if ( $child_pages ) : foreach ( $child_pages as $pageChild ) : setup_postdata( $pageChild );
$services = get_post_meta( $pageChild->ID, \'services\', true );
if (preg_match(\'/(^|,)\'.$currentPageID.\'($|,)/\', $services)){
echo "matches";
}
else {
echo "does not match";
}
endforeach; endif;
?>
我没有收到任何错误,但也没有显示任何内容。我也不知道如何添加相关子页面的链接。
提前感谢您的帮助!
最合适的回答,由SO网友:Alexnl 整理而成
以下是最终对我起作用的代码:
<?php
$mypages = get_pages( array( \'child_of\' => $post->ID, \'sort_column\' => \'menu_order\', \'sort_order\' => \'asc\' ) );
foreach( $mypages as $page ) {
$content = $page->post_content;
$content = apply_filters( \'the_content\', $content );
$price = get_post_meta( $page->ID, \'price\', true );
?>
<div class="service">
<h4><a href="<?php echo get_page_link( $page->ID ); ?>"><?php echo $page->post_title; ?></a></h4>
<div class="price"><?php echo $price; ?></div>
<p><?php echo $content; ?></p>
<p><?php
$currentPageID = $page->ID;
$child_pages = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_parent =2526 AND post_type = \'page\' ORDER BY menu_order", \'OBJECT\');
if ( $child_pages ) : foreach ( $child_pages as $pageChild ) : setup_postdata( $pageChild );
$services = get_post_meta( $pageChild->ID, \'services\', true );
if (preg_match(\'/(^|,| )\'.$currentPageID.\'($|,| )/\', $services, $matches)){
echo "<a class=\'promotion-link\' href=\'" . get_permalink(\'2526\') . "\'>A promotion is available for this service</a><br/>" ;
// echo "matches";
}
endforeach; endif;
?>