3. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
• How
to
go
beyond
the
default
SEO
features
of
WordPress
to
improve
search
engine
visibility
• How
to
redirect
removed
pages,
including
non-‐WordPress
pages
into
WordPress
• How
to
add
forward-‐looking
features
to
your
markup
to
take
advantage
of
new
search
opportuni(es
• Where
to
get
a
copy
of
this
deck
for
reference
What
You’ll
Learn
in
this
Session
There
will
be
code.
There
will
be
resources.
There
will
also
be…
ponies.
4. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
• Housekeeping:
A
Review
of
Assump(ons
• Implemen(ng
Authorship
• Structured
Markup
&
Schema
for
Advanced
Search
Display
• Duplicate
Content
in
WordPress
• Redirects:
Permalinks,
Upgrades
&
Migra(on
Session
Agenda
6. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
Key
Assump)ons
You’re
following
a
responsible
upgrade
path.
7. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
You
publish
on
your
own
domain
and
use
relevant
keywords
in
your
content.
Key
Assump)ons
8. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
You
have
a
responsive
WordPress
design
in
place,
or
will
soon.
Key
Assump)ons
9. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
Key
Assump)ons
You
know
the
basics
of
search
engine
op)miza)on.
10. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
Housekeeping:
Key
Assump)ons
You
have
a
solid
SEO
plug-‐in
installed.
11. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
You
have
sufficient
access
to
tweak
themes
or
install
plug-‐ins.
Housekeeping:
Key
Assump)ons
14. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
• Allows
you
to
associate
an
author’s
bylined
content
to
their
Google+
account
• May
insert
rich
snippets
into
search
results
• May
increase
engagement
and
click-‐through
rate
• High
future
value
Authorship:
Why
We
Do
It
Within
search
results,
informa(on
(ed
to
verified
online
profiles
will
be
ranked
higher
than
content
without
such
verifica(on,
which
will
result
in
most
users
naturally
clicking
on
the
top
(verified)
results.
The
true
cost
of
remaining
anonymous,
then,
might
be
irrelevance.
15. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
What
We
Need:
1. Human
Factors:
Coopera(on
from
every
author
to
create:
– A
Google+
profile
for
every
author.
With
a
picture.
– A
link
from
that
profile’s
contributor
sec(on
back
to
the
website.
2. Code:
A
link
containing
rel=”author”
on
every
content
page
poin(ng
from
your
website
or
blog
to
an
author’s
Google+
page.
Authorship:
Requirements
16. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
Authors
must
create
Google+
profiles:
Authorship:
Human
Factors
Photo
must
be
real
headshot
18. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
Authors
must
add
the
site
URL
to
their
profile
under
“Contributor
to:”
1. Go
to
h7ps://plus.google.com
2. Click
on
Profile,
click
on
About
3. Scroll
to
Links,
click
on
Edit
4. Add
link
to
site
under
“Contributor
to”
5. Click
on
Save
Authorship:
Human
Factors
19. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
Users
should
add
Google+
info
to
Contact
Info
in
WordPress:
Authorship:
Human
Factors
Variable
can
be
called
by
developers
as
<?php
the_author_meta(’googleplus');
?>
20. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
Manual
Add
for
Single-‐Author
Blog:
Edit
that
(header.php)
file!
– Go
to
Appearance
>
Themes
>
Editor
– Choose
Header
(header.php)
– Add
the
following
code
right
before
the
closing
</head>
tag:
<link
rel=“author”
href=h7ps://plus.google.com/
profilenumberhere/>
– Click
on
Update
File
and
you’re
done!
Authorship:
Code
(Single
Author)
22. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
Op(on
1:
• Ensure
that
every
author
links
to
their
Google+
profile
in
their
narra(ve
bio
• Ensure
author
bio
displays
on
each
post
If
theme
or
plug-‐ins
aren’t
doing
this
for
you,
you
can
edit
single.php
to
output
Author
Bio
on
blog
posts:
Authorship:
Code
(Mul)-‐Author)
<div
class="author">
<?php
if
(func(on_exists('get_avatar'))
{
echo
get_avatar(get_the_author_meta('user_email'),
'70');
}
else
{?>
<img
src=”<?php
echo
get_template_directory_uri();?>/images/author.jpg"
alt=""
class="imgles
authorpic"
/>
<?php
}
?>
<h5>About
<?php
the_author();?></h5>
<?php
the_author_meta
('descrip(on');
?>
</div>
23. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
• Allows
author
indicator
in
byline,
footnote
or
author
box
• Allows
link
to
publisher
organiza(on
Google+
page
Authorship:
Code
(Mul)-‐Author)
24. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
Google
Structured
Data
Tes(ng
Tool
Authorship:
Tes)ng
h7p://www.google.com/webmasters/tools/richsnippets
26. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
• Schema
is
a
specific
form
of
structured
data
markup
• Each
is
a
set
of
types,
associated
with
a
set
of
proper(es
• Search
engines
osen
use
the
structured
data
to
create
rich
search
results
What
is
Structured
Data?
Can
search
Google
by
various
factors
Shows
picture,
reviews,
more
27. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
Schemas
supported
by
Google/Bing:
• People:
Contact
informa(on,
social
networking,
(tle/role,
affilia(on,
address
• Events:
Summary,
loca(on,
descrip(on,
start
date,
end
date,
dura(on,
event
type,
photo,
(ckets
• Reviews:
Item
reviews,
ra(ngs,
reviewer
name,
etc.
• Products:
Name,
price,
image,
offer,
seller
• Recipes:
Prep
(me,
cook
(me,
nutri(on,
ingredients,
author
• Breadcrumb
naviga(on
Key
Schemas
Available
Full
list:
schema.org
28. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
• Many
recipe
plug-‐ins
available
• Many
review/ra(ng
snippet
plug-‐ins
available
• Rich
Contact
Widget
useful
for
company
sites
• Broader
scale
plug-‐ins
include:
– All
In
One
Schema.org
Rich
Snippets
– RavenTools
Schema
Creator
Schema
Plug-‐ins
30. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
Duplicate
Content:
Examples
Main
blog
archive
Author
archive
Same
content,
two
different
pages.
No
value-‐add
for
users
or
search
engines.
31. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
• Date-‐based
• Category-‐based
• Tag-‐based
• Pagina(on
• Author
archives
• Comment
pagina(on
• Post
format
groupings
Duplicate
Content:
WordPress’
Flaw
Standard
installs
of
WordPress
are
filthy
with
duplicate
content:
Duplicate
content
generally
refers
to
substan(ve
blocks
of
content
within
or
across
domains
that
either
completely
match
other
content
or
are
appreciably
similar….
Blogs,
forums,
and
related
systems
osen
show
the
same
content
in
mul(ple
formats.
For
example,
a
blog
entry
may
appear
on
the
home
page
of
a
blog,
in
an
archive
page,
and
in
a
page
of
other
entries
with
the
same
label.
32. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
Op(on
1:
Edit
your
header.php
file
to
add
condi(onal
noindex
access
to
archive
pages.
Duplicate
Content:
What
to
Do?
<!-‐-‐?php
if($paged
-‐-‐>
1
||
is_author()
||
is_tag()
||
is_date()
||
is_a7achment()
||
is_category()){
echo
'<meta
name="robots"
content="noindex,follow"
/>';
}
?>
(drop
is_author
for
mul(-‐author
blogs)
33. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
Duplicate
Content:
What
to
Do?
Op(on
2a:
Disable
pagina(on
and
date
archives
via
Yoast
SEO;
disable
author
on
single-‐author
blogs
34. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
Duplicate
Content:
What
to
Do?
Op(on
2b:
Use
noindex
for
Categories,
Archives
and
Tag
Archives
via
All
in
One
SEO
35. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
Op(on
3:
Hack
your
archives
pages
to
show
post
snippets
only:
• Archive.php
• Index.php
• Other
theme
files
controlling
archive
pages
Duplicate
Content:
What
to
Do?
Replace
“the_content”
in
PHP
files
with
“the_excerpt”
“the_excerpt”
shows
only
the
first
55
characters
of
post.
36. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
Op(on
4:
Do
Op(on
3,
and
create
custom
archive
page
templates
with
injected
unique
content
• This
requires
1
template
per
category,
tag
and/or
author,
based
on
exis(ng
archive.php
template
• Doing
this
bloats
the
number
of
templates
you
have
to
maintain
• Every
(me
someone
adds
categories
or
tags…
you
have
to
add
templates
Duplicate
Content:
What
to
Do?
37. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
• Google
now
supports
pagina(on
• Support
is
na(ve
in
Yoast
SEO
and
All-‐in-‐One
SEO
Should
you
ever
need
the
syntax:
• <link
rel=“next”
href=h7p://www.rideboldly.org/page/2>
• <link
rel=“prev”
href=“h7p://www.rideboldly.org/”>
Duplicate
Content:
Pagina)on
You
can
use
the
HTML
a7ributes
rel="next"
and
rel="prev"
to
indicate
the
rela(onship
between
individual
URLs.
Using
these
a7ributes
is
a
strong
hint
to
Google
that
you
want
to
treat
these
pages
as
a
logical
sequence.
38. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
• WordPress
started
placing
canonical
tags
on
single
posts/pages
as
of
v2.9
• Canonicaliza(on
for
paged
comments
is
not
na(ve
• Add
the
following
to
func(ons.php
template
if
you’re
in
a
paginated-‐
comments
scenario:
Duplicate
Content:
Canonicaliza)on
//
canonical
links
for
comments
func(on
canonical_for_comments()
{
global
$cpage,
$post;
if
($cpage
>
1)
:
echo
"n";
echo
"<link
rel='canonical'
href='";
echo
get_permalink(
$post-‐>ID
);
echo
"'
/>n";
endif;
}
add_ac(on('wp_head',
'canonical_for_comments');
40. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
You
should
develop
and
execute
a
redirect
plan
in
the
following
scenarios:
• Migra(ng
a
non-‐WordPress
site
into
WordPress
• Merging
two
websites
into
a
single
website
• When
dele(ng
pages
of
your
site
that
have
value
to
users
and/or
search
engines
• When
a
major
redesign
and
reorganiza(on
of
your
site
is
going
to
cause
significant
structural
change
Redirects:
When
to
Redirect
41. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
301
redirects
are:
• Good
for
users
• Good
for
search
engines
• Good
for
traffic
Redirects:
Why
Use
a
301
Redirect?
If
you
need
to
change
the
URL
of
a
page
as
it
is
shown
in
search
engine
results,
we
recommended
that
you
use
a
server-‐side
301
redirect.
This
is
the
best
way
to
ensure
that
users
and
search
engines
are
directed
to
the
correct
page.
The
301
status
code
means
that
a
page
has
permanently
moved
to
a
new
loca(on.
42. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
What
URLs
should
you
redirect?
• If
dele(ng
individual
pages,
redirect
each
page
being
deleted
to
a
new
target
• If
migra(ng
from
non-‐WordPress,
all
old
URLs
is
the
ideal
Redirects:
Choosing
What
to
Redirect
43. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
• 500
URI
crawl
limit
for
free
version
• Allows
full
export
of
all
known
URLs,
headings,
response
codes
• Useful
for
many
SEO
tasks
• Report
against
top
pages,
top
landing
pages,
SEO
Landing
Pages
SEO
Tools
for
Excel
• Provides
a
single-‐spreadsheet
look
at
what
pages
have
social
shares
• Retrieves
Google
toolbar
PageRank
for
a
page
• Can
import
Google
Analy(cs
Data
Google
Webmaster
Tools
• Allows
monitoring
of
site
crawl
errors,
404
pages
not
found
by
Google
Redirects:
What
To
Redirect
When
dealing
with
migra(ng
a
big
site
or
if
wondering
which
URLs
are
“worth”
it,
follow
the
data:
44. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
Crea(ng
manual
redirects
in
.htaccess
1. FTP
to
your
WordPress
host
2. Download
your
.htaccess
file
3. SAVE
A
COPY
JUST
IN
CASE
(seriously)
4. Add
redirects
to
file
5. Upload
it
back
to
your
WordPress
host
– You
may
need
to
rename
to
1.htaccess
to
upload,
then
change
name
aser
upload
when
using
FTP
6. Make
sure
you
didn’t
break
stuff
– If
you
did,
upload
the
old
copy
and
start
again
– If
you
didn’t,
high-‐five
yourself
301
Redirec)on
Using
.htaccess
Syntax:
Redirect
301
/old-‐page.html
h7p://www.site.com/new-‐page/
Each
URL
requires
a
line
in
the
file
Source
URLs
must
be
on
same
domain
as
.htaccess
file
45. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
• .htaccess
and
index.php
should
be
together
in
the
top
level
of
the
directory
indicated
by
the
site
address
(URL)
se}ng
on
your
WordPress
General
Op(ons
page
• Make
sure
your
FTP
tool
shows
all
files
(not
all
show
dot-‐files
by
default)
• Some
hosts
won’t
let
you
change
your
.htaccess
file
• If
you
really
don’t
have
one,
create
one
301
Redirects
Using
.htaccess:
What
If
I
Don’t
Have
an
.htaccess
File?!
If
you
create
an
.htaccess
file,
be
sure
to
include
the
following:
#
BEGIN
WordPress
<IfModule
mod_rewrite.c>
RewriteEngine
On
RewriteBase
/
RewriteRule
^index.php$
-‐
[L]
RewriteCond
%{REQUEST_FILENAME}
!-‐f
RewriteCond
%{REQUEST_FILENAME}
!-‐d
RewriteRule
.
/index.php
[L]
</IfModule>
#
END
WordPress
46. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
• Edit
.htaccess
from
the
Files
menu
of
the
WordPress
SEO
plug-‐in
• Plug-‐in
specific
to
doing
redirects
• Also
tracks
404
errors,
supports
regex,
reports
on
redirec(on
301
Redirects
Using
Plug-‐Ins
Yoast
SEO
Redirec)on
47. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
The
default
WordPress
setup
for
permalinks
is
not
good
for
SEO.
Preferred
op(ons
include:
• /%year%/%monthnum%/%postname%/
• /%year%/%monthnum%/%day%/%postname%/
• /%postname%/
• /%year%/%postname%/
A
Note
on
WordPress
Permalinks
WordPress
defaults
to
301
redirects
if
you
update
your
permalink
structure
(v3.5.1).
At
one
(me,
this
was
not
true.
That
said,
if
you
have
significant
social
sharing
or
organic
search
traffic,
think
twice
before
changing
your
permalinks!
49. Introduc)on:
Naviga)on
Advanced
SEO
for
WordPress
@betweensta6ons
• Never
change
domains
unless
you
have
a
compelling
business
reason
• If
you’re
just
changing
domains
without
changing
the
site,
best
prac(ce
is:
– Use
a
301
redirect
at
the
domain
level
– Use
Webmaster
Tools
address
change
no(fier
in
both
Google
&
Bing
– Cross
your
fingers
and
hope
hard
– Regularly
review
your
crawl
errors
to
make
sure
that
301
redirects
work
properly
&
404s
do
not
increase
• Try
to
avoid
switching
site
structure
and
domain
all
at
once
– Don’t
redirect
all
your
traffic
to
your
home
page
– Don’t
let
your
old
domain
expire
for
at
least
180+
days
301
Redirects:
A
Note
on
Moving
Domains