PHP & SEO

Implementer Person Schema Markup i PHP

8. januar 2026

PHPJSON-LDSchema.orgPerson MarkupSEOStructured Data

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 sameAs til troværdige profiler
  • Brug samme navneformat konsekvent
  • Opdater markup når dine oplysninger ændres
  • Test med strukturerede data-testværktøjer