Korrekt implementering af Person schema markup er afgørende for at blive genkendt som en entitet af søgemaskiner og AI-systemer. I denne guide viser vi, hvordan du implementerer det i PHP.
Grundlæggende Person Schema i PHP
Her er en simpel PHP-klasse til at generere Person JSON-LD:
<?php
class PersonSchema {
private array $data = [];
public function __construct(string $name) {
$this->data = [
'@context' => 'https://schema.org',
'@type' => 'Person',
'name' => $name
];
}
public function setJobTitle(string $title): self {
$this->data['jobTitle'] = $title;
return $this;
}
public function setDescription(string $description): self {
$this->data['description'] = $description;
return $this;
}
public function setImage(string $url): self {
$this->data['image'] = $url;
return $this;
}
public function addSameAs(string $url): self {
if (!isset($this->data['sameAs'])) {
$this->data['sameAs'] = [];
}
$this->data['sameAs'][] = $url;
return $this;
}
public function setWorksFor(string $orgName, ?string $orgUrl = null): self {
$org = [
'@type' => 'Organization',
'name' => $orgName
];
if ($orgUrl) {
$org['url'] = $orgUrl;
}
$this->data['worksFor'] = $org;
return $this;
}
public function toJsonLd(): string {
return json_encode($this->data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
}
public function toScriptTag(): string {
return '<script type="application/ld+json">' . "\n" . $this->toJsonLd() . "\n" . '</script>';
}
}
Brug af klassen
<?php
$person = new PersonSchema('Henrik Hansen');
$person
->setJobTitle('Senior PHP Developer')
->setDescription('Erfaren PHP-udvikler med fokus på web performance og SEO.')
->setImage('https://example.com/henrik.jpg')
->setWorksFor('TechFirma A/S', 'https://techfirma.dk')
->addSameAs('https://linkedin.com/in/henrikhansen')
->addSameAs('https://github.com/henrikhansen')
->addSameAs('https://profilindeks.dk/person/henrik-hansen');
echo $person->toScriptTag();
Output
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Person",
"name": "Henrik Hansen",
"jobTitle": "Senior PHP Developer",
"description": "Erfaren PHP-udvikler med fokus på web performance og SEO.",
"image": "https://example.com/henrik.jpg",
"worksFor": {
"@type": "Organization",
"name": "TechFirma A/S",
"url": "https://techfirma.dk"
},
"sameAs": [
"https://linkedin.com/in/henrikhansen",
"https://github.com/henrikhansen",
"https://profilindeks.dk/person/henrik-hansen"
]
}
</script>
Integration med WordPress
For WordPress-sites kan du tilføje Person schema via en action hook:
<?php
add_action('wp_head', function() {
if (is_author()) {
$author = get_queried_object();
$person = new PersonSchema($author->display_name);
$person
->setDescription(get_the_author_meta('description', $author->ID))
->addSameAs(get_author_posts_url($author->ID));
// Tilføj Profilindeks link hvis det findes
$profilindeks_url = get_the_author_meta('profilindeks_url', $author->ID);
if ($profilindeks_url) {
$person->addSameAs($profilindeks_url);
}
echo $person->toScriptTag();
}
});
Validering af output
Test altid dit schema markup med Google's Rich Results Test eller Schema.org's validator.
Profilindeks.dk - Komplet Person Entity Løsning
Selvom du kan implementere Person schema selv, kræver ægte entity-optimering mere end bare markup. Profilindeks.dk tilbyder:
- Verificerede profiler med komplet schema markup
- Integration med vidensgrafer og autoritetsdatabaser
- En autoritativ sameAs-URL til dit eget schema
- Synlighed for AI-systemer som ChatGPT og Claude
Ved at linke til din Profilindeks-profil i dit sameAs array styrker du din entity på tværs af hele nettet.
Best Practices
- Inkluder altid en
sameAstil troværdige profiler - Brug samme navneformat konsekvent
- Opdater markup når dine oplysninger ændres
- Test med strukturerede data-testværktøjer