如何从WordPress页面菜单中移除特定页面

从 wp_list_pages() 中生成的页面菜单中移除特定的页面是非常简单的,只需要把下面代码加入到主题的 functions.php 文件中:

// add page ids to the exclude list
add_filter( 'wp_list_pages_excludes', 'bannedPages' );
function bannedPages( $exclude_array ) {
  return array_merge( $exclude_array, array( 4, 17 ) );
}

只需要把数组中的数字改成你要移除页面 ID 就可。

给WordPress Page添加摘要输入框

SEO 一个方面就是给页面添加 Meta Description,虽然添加 Description 不会更改页面的权重,但是在 Google 等现代搜索引擎的搜索结果页面会直接使用 Description 来作为搜索结果,这样显示得更加友好,用户也能一眼就知道博客文章或者页面主要内容是什么,使得用户更加容易点击你的页面,增加博客的流量。

我一般是使用 WordPress 的摘要直接作为 Meta Description 进行 SEO,但是默认情况下 WordPress Page 编辑页面没有摘要(Excerpt)输入框,所以对 WordPress 进行 SEO 的时候比较麻烦。

这个时候我们就可以通过以下代码给我 WordPress Page 添加摘要输入框:

add_action( 'admin_menu', 'pageDescription' );
function pageDescription() {
  add_meta_box( 'postexcerpt', __('Excerpt'), 'post_excerpt_meta_box', 'page', 'normal', 'core' );
}

只需将以上的代码添加到当前主题的 functions.php 文件即可。当然你也可以添加一个插件头,作为一个单独插件使用。这样在 WordPress 后台编辑 Page 的时候和编辑 Post 一样有摘要输入框了。

WordPress显示同个父页面的其他子页面的链接

假设以下情况,有一个父页面,然后它有一些子页面。当你打开父页面的时候,你想在 sidebar 显示它的子页面的链接。当你打开子页面链接的时候,你还是想要显示同样一组链接。但问题是,你现在想显示的是相同父页面的其他子页面。你不能通过一个简单函数就能解决这个问题。下面是详细解决方法:

<?php
if($post->post_parent)
  $children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0");
else
  $children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0");
if ($children) {
  echo '<ul>';
  echo $children;
  echo '</ul>';
} ?>

把页面从WordPress搜索结果中排除

默认情况下,WordPress 搜索结果显示发布的日志和页面,如果你想把页面从 WordPress 搜索结果中排除,在当前主题的 functions.php 文件中添加如下的函数:

add_filter('pre_get_posts','searchFilter');
function searchFilter($query) {
  if ($query->is_search) {
    $query->set('post_type', 'post');
  }
  return $query;
}

当然,你也可以把 post_type 设置为 page,这样搜索结果只有页面。