如何使用自定义字段而不是 wp_list_pages 返回的页面标题?
How can I use custom fields instead of the page titles returned by wp_list_pages?
当页面有 child 个页面时,我正在尝试使用侧边菜单进行导航。
我目前拥有的几乎是完美的,但我不想使用菜单中 child 页面的标题,而是想使用自定义字段 'sidebar_title'.
我目前 运行 我发现的这个功能:
function wpb_list_child_pages() {
global $post;
if ( is_page() && $post->post_parent )
$childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->post_parent . '&echo=0' );
else
$childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->ID . '&echo=0' );
if ( $childpages ) {
$string = '
<nav class="sidenav">
<ul>
<li><a href="'.get_permalink($post->post_parent).'">'.get_the_title($post->post_parent).'</a></li>'
.$childpages.
'</ul>
</nav>';
}
return $string;
}
这给了我这个结果:
<nav class="sidenav">
<ul>
<li><a href="page URL">Parent Page</a></li>
<li><a href="page URL">Child Page</a></li>
<li><a href="page URL">Child Page</a></li>
</ul>
</nav>
我只需要知道如何用我的自定义字段替换 child 页面的标题。
您需要使用 get_pages
函数才能控制布局。您现在使用的函数是 wp_list_pages
,它基于 get_pages
,因此您无需在主请求中进行任何更改。所以您的完整代码将如下所示:
$childpages = get_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->ID . '&echo=0' );
if ( $childpages ) {
$string = '<nav class="sidenav"><ul><li><a href="'.get_permalink($post->post_parent).'">'.get_the_title($post->post_parent).'</a></li>'
foreach( $childpages as $page ) {
$string .= '<li><a href="' . get_permalink($page->ID) . '">' . get_post_meta($page->ID, 'sidebar_title', true) . '</a></li>';
}
$string .= '</ul></nav>';
return $string;
}
这似乎成功了。
function wpb_list_child_pages() {
global $post;
if ( is_page() && $post->post_parent )
$childpages = get_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->post_parent . '&echo=0' );
else
$childpages = get_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->ID . '&echo=0' );
if ( $childpages ) {
$string = '<nav class="sidenav"><ul><li><a href="'.get_permalink($post->post_parent).'">'.get_field(sidebar_title, ($post->post_parent)).'</a></li>';
foreach( $childpages as $page ) {
$string .= '<li><a href="' . get_permalink($page->ID) . '">' . get_post_meta($page->ID, 'sidebar_title', true) . '</a></li>';
}
$string .= '</ul></nav>';
return $string;
}}
当页面有 child 个页面时,我正在尝试使用侧边菜单进行导航。 我目前拥有的几乎是完美的,但我不想使用菜单中 child 页面的标题,而是想使用自定义字段 'sidebar_title'.
我目前 运行 我发现的这个功能:
function wpb_list_child_pages() {
global $post;
if ( is_page() && $post->post_parent )
$childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->post_parent . '&echo=0' );
else
$childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->ID . '&echo=0' );
if ( $childpages ) {
$string = '
<nav class="sidenav">
<ul>
<li><a href="'.get_permalink($post->post_parent).'">'.get_the_title($post->post_parent).'</a></li>'
.$childpages.
'</ul>
</nav>';
}
return $string;
}
这给了我这个结果:
<nav class="sidenav">
<ul>
<li><a href="page URL">Parent Page</a></li>
<li><a href="page URL">Child Page</a></li>
<li><a href="page URL">Child Page</a></li>
</ul>
</nav>
我只需要知道如何用我的自定义字段替换 child 页面的标题。
您需要使用 get_pages
函数才能控制布局。您现在使用的函数是 wp_list_pages
,它基于 get_pages
,因此您无需在主请求中进行任何更改。所以您的完整代码将如下所示:
$childpages = get_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->ID . '&echo=0' );
if ( $childpages ) {
$string = '<nav class="sidenav"><ul><li><a href="'.get_permalink($post->post_parent).'">'.get_the_title($post->post_parent).'</a></li>'
foreach( $childpages as $page ) {
$string .= '<li><a href="' . get_permalink($page->ID) . '">' . get_post_meta($page->ID, 'sidebar_title', true) . '</a></li>';
}
$string .= '</ul></nav>';
return $string;
}
这似乎成功了。
function wpb_list_child_pages() {
global $post;
if ( is_page() && $post->post_parent )
$childpages = get_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->post_parent . '&echo=0' );
else
$childpages = get_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->ID . '&echo=0' );
if ( $childpages ) {
$string = '<nav class="sidenav"><ul><li><a href="'.get_permalink($post->post_parent).'">'.get_field(sidebar_title, ($post->post_parent)).'</a></li>';
foreach( $childpages as $page ) {
$string .= '<li><a href="' . get_permalink($page->ID) . '">' . get_post_meta($page->ID, 'sidebar_title', true) . '</a></li>';
}
$string .= '</ul></nav>';
return $string;
}}