关于WordPress的SEO优化相关的一些PHP页面脚本技巧
作者:吴钊 发布时间:2024-06-05 09:39:16
随着搜索引擎大兴, 排列在前的网站引入大量流量. 无论是搜索页面的广告还是查出来的结果, 与搜索者的目标匹配度都比较高 (如果搜索引擎足够智能), 所以通过搜索引擎而来的访客很可能会从网站上得到他想要的东西, 并记住这个网站. 也就是说, 搜索引擎会带来很多有价值的流量, 所以花点时间针对搜索引擎优化一下 WordPress 博客也是值得的. 本文将为你分享一些 WordPress SEO 技巧.
以前我没有花太多时间做搜索引擎优化, 搜索引擎收录效果不是很好. 去年二月我终于为博客搞了一下 SEO, 写下这个文章. 一年半以来陆续进行了更多 SEO 优化, 博客文章写得不多了, 流量却有增无减, 网站也重回 PageRank 7, 效果相当不错的. 这次我根据自己的 WordPress SEO 方案更新了本文的内容.
优化博客副标题
副标题 (slogan), WordPress 中称为 tagline. 它与博客标题不一样, 可能会承载一些描述博客的文字, 优化一下可以利用起来. 如我的副标题是 "mg12's Blog - Just Another WordPress Blog", 其中的 WordPress Blog 被我设置为 h1. 因为我想告诉爬虫, 这是一个关于 WordPress 的博客.
区分显示页面标题
页面的标题不要包含博客名称. WordPress 标题一般会用到 bloginfo('name') 和 wp_title() 两部分, 前者是博客名称, 后者是文章标题 (如果标题不存在则不显示). 经典主题和默认主题输出标题用的代码如下.
<title><?php wp_title('«', true, 'right'); ?> <?php bloginfo('name'); ?></title>
输出的标题结构是 "文章标题 » 博客名称".
除非你的标题和文章内容相关度比较高, 否则这样的标题对 SEO 显然是不好的. 标题是爬虫认为重要的内容之一, 如果标题中包含了与文章内容无关的信息, 多少会对该页面有所影响.
那应该怎么弄呢? 我们可以对不同类型的页面进行区分, 我的实现代码如下.
<title><?php
// 如果是首页和文章列表页面, 显示博客标题
if(is_front_page() || is_home()) {
bloginfo('name');
// 如果是文章详细页面和独立页面, 显示文章标题
} else if(is_single() || is_page()) {
wp_title('');
// 如果是类目页面, 显示类目表述
} else if(is_category()) {
printf('%1$s 类目的文章存档', single_cat_title('', false));
// 如果是搜索页面, 显示搜索表述
} else if(is_search()) {
printf('%1$s 的搜索结果', wp_specialchars($s, 1));
// 如果是标签页面, 显示标签表述
} else if(is_tag()) {
printf('%1$s 标签的文章存档', single_tag_title('', false));
// 如果是日期页面, 显示日期范围描述
} else if(is_date()) {
$title = '';
if(is_day()) {
$title = get_the_time('Y年n月j日');
} else if(is_year()) {
$title = get_the_time('Y年');
} else {
$title = get_the_time('Y年n月');
}
printf('%1$s的文章存档', $title);
// 其他页面显示博客标题
} else {
bloginfo('name');
}
?></title>
Keywords 和 Description
Keywords 为搜索引擎提供网页包含的核心内容, Description 则为搜索引擎提供网页的描述信息. 我发布的主题曾经包括了对 keywords 和 description 的处理, 但因为一些 SEO 插件发生冲突, 在较新的版本中已经去除. 笔者认为 WordPress 的很多所谓 SEO 插件做得并不到位, 对中文博客支持都很差, 自己修改一下效果可能更好.
以下是我对 keywords, description 和页面标题的处理规则, 实现方法可以参考上一段关于页面标题的说明.
文章详细页面的描述一般取文章的前 220 个字符即可, 特别重要的页面和文章可以自定义摘要, 使其信息准确度更高. 如果存在摘要信息则使用摘要, 没有则使用前 220 个字符, 实现代码如下.
<?php
if($post->post_excerpt) {
$description = $post->post_excerpt;
} else {
// utf8_trim 方法是为了在截取字符之前对字符串进行转义, 避免出现截取半个汉字的情况
// 参考文档: http://php-utf8.61924.nl/documentation/functions/utf8_trim.html
$description = utf8_trim(substr(strip_tags($post->post_content), 0, 220));
}
?>
猜你喜欢
- 可以加上时间判断,让程序在固定的时间启动。#coding=utf-8#!/usr/bin/pythonimport osdef open_a
- list解析先看下面的例子,这个例子是想得到1到9的每个整数的平方,并且将结果放在list中打印出来>>> power2
- 年底,抽奖这个话题很多人都会讨论,都希望可以中奖。接下来我就使用 Python 中的 Tkinter 模块来实现一个简单的滚动抽奖器。一、T
- Python 是一种高级的,动态的,多泛型的编程语言。Python代码很多时候看起来就像是伪代码一样,因此你可以使用很少的几行可读性很高的代
- 介绍我们可以使用code-generator 以及controller-tools来进行代码自动生成,通过代码自动生成可以帮我们自动生成 C
- 来,考考大家一个问题,在 MySQL 中当某一列设置为 int(0) 时会发生什么 ?为了演示这个问题,我们先要创建一个表DROP TABL
- 前言这篇博文发布后,有朋友问有没有SQL server版本的,现在有了==》传送门一、场景再现在一个erp进销存系统或0A等其他系统中,如果
- 本文实例讲述了Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作。分享给大家供大家参考,具体如下:实现一个功能: &n
- 1.对象的创建方法: (1)通过new运算符创建,new后面跟着一个构造函数名 var object = new Object(); 构造函
- 对Python中列表和数组的赋值,浅拷贝和深拷贝的实例讲解列表赋值:>>> a = [1, 2, 3]>>&g
- 关于Variable和Tensor旧版本的Pytorch中,Variable是对Tensor的一个封装;在Pytorch大于v0.4的版本后
- pymysql 是 python 用来操作MySQL的第三方库,下面具体介绍和使用该库的基本方法。1.建立数据库连接通过 connect 函
- select * from (select t.*, row_number() over(order by 列 desc) r from 表
- 1. 模板编译Vue的模板编译就是将模板字符串转换为渲染函数的过程。具体来说,当组件的生命周期执行到created和beforeMounte
- 让ASP搭配MYSQL所需要工具mysql-4.1.11-win32 myodbc-3.51.11-1-dll myodbc-3.51.11
- 导言:在前面的教程我们阐述了应用程序处理二进制数据的2种模式,以及使用FileUpload 控件从浏览器向服务器文件系统上传文件。当文件上传
- 函数画图以 z = x 2 + y 2 为例#导入模块import numpy as npimport matplotlib.py
- 1、将mysql数据导出到SQL文件中(数据库存在的情况)主要需要修改数据库的相关信息,端口号、用户名、密码等其中数据库得存在,不然会报错
- 背景终端(命令行)操作是程序员的必备技能,但是你知道怎么通过golang制作出如下命令吗?$ flag girl -hUsage of gi
- 作者:Lachlan Hunt概要网络是不断的进化的. 新的和有创意的网站每天都在出现, 从各方面都在冲击着HTML的边界. HTML 4来