WordPress自动摘要的方法

修改 functions.php 文件

add_filter('the_content', 'autoExcerpts');
function autoExcerpts($content = false) {
  // If is the home page, an archive, or search results
  if(is_front_page() || is_archive() || is_search()) :
    global $post;
    $content = $post->post_excerpt;
    
    // If an excerpt is set in the Optional Excerpt box
    if($content) :
      $content = apply_filters('the_excerpt', $content);
    
    // If no excerpt is set
    else :
      $content = $post->post_content;
      $excerpt_length = 55;
      $words = explode(' ', $content, $excerpt_length + 1);
      if(count($words) > $excerpt_length) :
        array_pop($words);
        array_push($words, '...');
        $content = implode(' ', $words);
      endif;
      $content = '<p>' . $content . '</p>';
    endif;
  endif;
    
  // Make sure to return the content
  return $content;
}

当设置摘要的时候,会显示摘要。没有的时候就自动提取摘要

给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目录调用最新文章和摘要

<?php
require_once('blog/wp-config.php');
function get_recent_posts($no_posts = 6, $before = '+ ', $after = '<br>', $show_pass_post = false, $skip_posts = 0) {
  global $wpdb, $tableposts;
  $request = "SELECT ID, post_title, post_date, post_content FROM $tableposts WHERE post_status = 'publish' ";
  if(!$show_pass_post) {
    $request .= "AND post_password ='' ";
  }
  $request .= "ORDER BY post_date DESC LIMIT $skip_posts, $no_posts";
  $posts = $wpdb->get_results($request);
  $output = '';
  foreach ($posts as $post) {
    $post_title = stripslashes($post->post_title);
    // $post_date = mysql2date('j.m.Y', $post->post_date);
    $permalink = get_permalink($post->ID);
    $post_content = stripslashes($post->post_content);
    $output .= $before . '<a href="' . $permalink . '" rel="bookmark" title="Permanent Link: ' . $post_title . '">' . $post_title . '</a>'. $after;
    $output .= $before . $post_content .$after;
  }
  echo $output;
}

function mul_excerpt ($excerpt) {
  $myexcerpt = substr($excerpt,0,255);
  return utf8_trim($myexcerpt) . '... ';
}
get_recent_posts();
?>

WordPress如何获取文章内容的第一段

如果文章没有填摘要,使用文章的第一段作为摘要是不错的选择,那么如何获取文章内容的第一段呢?可以使用下面的函数

function get_first_p($post){
  //如果是使用 Windows Live Writer 这些工具写日志,可能使用<p>和</p>进行分段
  if(preg_match('/<p>(.*)<\/p>/iU',trim(strip_tags($post->post_content,"<p>")),$matches)){
    return $matches[1];
  } else {
    //如果直接在 WordPress 写日志,使用换行符(\n)来分段
    $post_content = explode("\n",trim(strip_tags($post->post_content)));
    return $post_content ['0'];
  }
}