{"slug":"wordpress-seo-author-profiles","title":"WordPress SEO Author Profile Setup (E-E-A-T)","tags":["seo","eeat","author-profile","rank-math"],"agent_summary":"Setting up WordPress author profiles with social links, bio, and schema to satisfy Google E-E-A-T signals.","trigger_phrases":["wordpress author profile","eeat wordpress","author bio wordpress","wordpress e-e-a-t","rank math author schema"],"runnable":false,"markdown":"\nGoogle's E-E-A-T (Experience, Expertise, Authoritativeness, Trustworthiness) signals are strengthened by properly configured author profiles. Set this up before publishing blog content.\n\n## Author Profile Fields to Complete\n\nIn WordPress Admin > Users > Edit Profile:\n\n| Field | What to Enter |\n|-------|--------------|\n| First/Last Name | Real full name |\n| Display Name | Matches name used on content |\n| Biographical Info | 3-5 sentences: expertise, location, credentials |\n| Website | Author's personal site or LinkedIn |\n| Social links | Twitter/X, LinkedIn, Google Scholar (if applicable) |\n\n## Rank Math Author Schema\n\nRank Math automatically generates `Person` schema from the user profile. For it to be valid:\n\n1. Navigate to Rank Math > Titles & Meta > Authors\n2. Enable author archive pages if using them\n3. Set \"Author Archive Title\" pattern\n4. Verify social profiles are listed (they populate `sameAs` in schema)\n\n## Author Bio Widget on Blog Posts\n\nAdd an author bio box below post content using this pattern in `functions.php`:\n\n```php\nfunction add_author_bio_box($content) {\n    if (is_single() && is_main_query()) {\n        $author_id   = get_the_author_meta('ID');\n        $author_name = get_the_author_meta('display_name');\n        $author_bio  = get_the_author_meta('description');\n        $author_url  = get_the_author_meta('user_url');\n        $avatar      = get_avatar($author_id, 96);\n\n        $bio_box = '<div class=\"author-bio-box\">';\n        $bio_box .= $avatar;\n        $bio_box .= '<h3>' . esc_html($author_name) . '</h3>';\n        $bio_box .= '<p>' . esc_html($author_bio) . '</p>';\n        if ($author_url) {\n            $bio_box .= '<a href=\"' . esc_url($author_url) . '\">Website</a>';\n        }\n        $bio_box .= '</div>';\n\n        $content .= $bio_box;\n    }\n    return $content;\n}\nadd_filter('the_content', 'add_author_bio_box');\n```\n\n## Blog Post Publishing Pre-Publish Checklist\n\n- [ ] Author assigned (not \"admin\")\n- [ ] Author profile bio filled in (3+ sentences)\n- [ ] Featured image set with keyword-rich alt text\n- [ ] Internal links: 1 to a service page, 1 to a related blog post\n- [ ] Rank Math score: 80+ (green)\n- [ ] Category and tags assigned\n- [ ] Canonical URL set (self-referential)\n- [ ] Schema type: BlogPosting (set in Rank Math)\n","html":"<p>Google's E-E-A-T (Experience, Expertise, Authoritativeness, Trustworthiness) signals are strengthened by properly configured author profiles. Set this up before publishing blog content.</p>\n<h2>Author Profile Fields to Complete</h2>\n<p>In WordPress Admin > Users > Edit Profile:</p>\n<p>| Field | What to Enter |\n|-------|--------------|\n| First/Last Name | Real full name |\n| Display Name | Matches name used on content |\n| Biographical Info | 3-5 sentences: expertise, location, credentials |\n| Website | Author's personal site or LinkedIn |\n| Social links | Twitter/X, LinkedIn, Google Scholar (if applicable) |</p>\n<h2>Rank Math Author Schema</h2>\n<p>Rank Math automatically generates <code>Person</code> schema from the user profile. For it to be valid:</p>\n<ol>\n<li>Navigate to Rank Math > Titles &#x26; Meta > Authors</li>\n<li>Enable author archive pages if using them</li>\n<li>Set \"Author Archive Title\" pattern</li>\n<li>Verify social profiles are listed (they populate <code>sameAs</code> in schema)</li>\n</ol>\n<h2>Author Bio Widget on Blog Posts</h2>\n<p>Add an author bio box below post content using this pattern in <code>functions.php</code>:</p>\n<pre><code class=\"language-php\">function add_author_bio_box($content) {\n    if (is_single() &#x26;&#x26; is_main_query()) {\n        $author_id   = get_the_author_meta('ID');\n        $author_name = get_the_author_meta('display_name');\n        $author_bio  = get_the_author_meta('description');\n        $author_url  = get_the_author_meta('user_url');\n        $avatar      = get_avatar($author_id, 96);\n\n        $bio_box = '&#x3C;div class=\"author-bio-box\">';\n        $bio_box .= $avatar;\n        $bio_box .= '&#x3C;h3>' . esc_html($author_name) . '&#x3C;/h3>';\n        $bio_box .= '&#x3C;p>' . esc_html($author_bio) . '&#x3C;/p>';\n        if ($author_url) {\n            $bio_box .= '&#x3C;a href=\"' . esc_url($author_url) . '\">Website&#x3C;/a>';\n        }\n        $bio_box .= '&#x3C;/div>';\n\n        $content .= $bio_box;\n    }\n    return $content;\n}\nadd_filter('the_content', 'add_author_bio_box');\n</code></pre>\n<h2>Blog Post Publishing Pre-Publish Checklist</h2>\n<ul>\n<li>[ ] Author assigned (not \"admin\")</li>\n<li>[ ] Author profile bio filled in (3+ sentences)</li>\n<li>[ ] Featured image set with keyword-rich alt text</li>\n<li>[ ] Internal links: 1 to a service page, 1 to a related blog post</li>\n<li>[ ] Rank Math score: 80+ (green)</li>\n<li>[ ] Category and tags assigned</li>\n<li>[ ] Canonical URL set (self-referential)</li>\n<li>[ ] Schema type: BlogPosting (set in Rank Math)</li>\n</ul>\n"}