Die Gewinnung neuer Mitarbeiter ist ein zentrales Thema für moderne Unternehmen – und digitale Prozesse spielen dabei eine immer größere Rolle. Die HR-Software Personio hilft Ihnen, Stellenangebote zu verwalten und Bewerbungen effizient zu bearbeiten. Doch wie gelangen diese Daten elegant auf Ihre WordPress-Website? In dieser Anleitung zeigen wir Ihnen Schritt für Schritt, wie Sie Personio über eine XML-Schnittstelle und das Plugin „WP All Import“ optimal einbinden – inklusive automatisierter Abläufe, Filterfunktionen und einem Bewerbungs-Button.
Das benötigen Sie für die Umsetzung
Um Personio nahtlos mit Ihrer WordPress-Website zu verbinden, sind einige vorbereitende Schritte und Tools erforderlich. Die folgende Liste zeigt, was Sie vorab bereitlegen sollten, um direkt durchstarten zu können:
- Eine aktive Personio-Lizenz mit XML-Schnittstelle
- Den XML-Link aus Ihrem Personio-Account
- Eine WordPress-Website (idealerweise mit Child-Theme)
- Das Plugin „WP All Import“ (kostenfrei oder PRO)
- Optional: „WPML All Import“ für Mehrsprachigkeit
- Optional: „Search & Filter“-Plugin für Filterfunktionen
- Etwas Erfahrung mit CPTs, Funktionen und Permalinks
Schritt 1: WP All Import installieren
Installieren Sie das Plugin „WP All Import“, um Stellenanzeigen aus Personio über eine XML-Schnittstelle direkt in WordPress zu importieren. Das Plugin ist in einer kostenlosen und einer PRO-Version erhältlich. Für automatisierte Importe (z. B. jeden Sonntag um 3 Uhr) empfiehlt sich die PRO-Version.
Schritt 2: Custom Post Type „Jobs“ anlegen
Damit Ihre importierten Stellenangebote strukturiert in WordPress verwaltet werden können, legen Sie einen sogenannten Custom Post Type (CPT) an. Dieser funktioniert wie ein eigener Inhaltsbereich – vergleichbar mit „Beiträge“ oder „Seiten“ –, ist aber speziell für Ihre Jobs vorgesehen. So behalten Sie Übersicht und können Stellenanzeigen separat gestalten und aufrufen.
Wir empfehlen den Namen „Jobs“, alternativ sind auch „Karriere“ oder „Stellenanzeigen“ möglich.
Wo kommt der Code hin?
Öffnen Sie die Datei functions.php
Ihres Themes oder – noch besser – Ihres Child-Themes. Fügen Sie den folgenden Code am Ende der Datei ein (aber immer oberhalb von schließendem PHP-Code wie ?>
, falls vorhanden). Er registriert den neuen Inhaltstyp „Jobs“ im System:
/* --- Custom Post Types --- */ // Custom Post Type: Jobs if ( ! function_exists('custom_posttype_jobs') ) { function custom_posttype_jobs() { $labels = array( 'name' => _x( 'Jobs', 'Post Type General Name', 'posttype_jobs' ), 'singular_name' => _x( 'Job', 'Post Type Singular Name', 'posttype_jobs' ), 'menu_name' => __( 'Jobs', 'posttype_jobs' ), 'name_admin_bar' => __( 'Jobs', 'posttype_jobs' ), 'archives' => __( 'Jobs Archiv', 'posttype_jobs' ), 'attributes' => __( 'Jobs Eigenschaft', 'posttype_jobs' ), 'parent_item_colon' => __( 'Eltern-Job:', 'posttype_jobs' ), 'all_items' => __( 'Alle Jobs', 'posttype_jobs' ), 'add_new_item' => __( 'Neuen Job hinzufügen', 'posttype_jobs' ), 'add_new' => __( 'Job erstellen', 'posttype_jobs' ), 'new_item' => __( 'Neuen Job', 'posttype_jobs' ), 'edit_item' => __( 'Job bearbeiten', 'posttype_jobs' ), 'update_item' => __( 'Job aktualisieren', 'posttype_jobs' ), 'view_item' => __( 'Job ansehen', 'posttype_jobs' ), 'view_items' => __( 'Jobs ansehen', 'posttype_jobs' ), 'search_items' => __( 'Job suchen', 'posttype_jobs' ), 'not_found' => __( 'Nichts gefunden', 'posttype_jobs' ), 'not_found_in_trash' => __( 'Nichts im Papierkorb gefunden', 'posttype_jobs' ), 'featured_image' => __( 'Beitragsbild', 'posttype_jobs' ), 'set_featured_image' => __( 'Beitragsbild auswählen', 'posttype_jobs' ), 'remove_featured_image' => __( 'Beitragsbild entfernen', 'posttype_jobs' ), 'use_featured_image' => __( 'Als Beitragsbild nutzen', 'posttype_jobs' ), 'insert_into_item' => __( 'In Job einfügen', 'posttype_jobs' ), 'uploaded_to_this_item' => __( 'Zu diesem Job hochladen', 'posttype_jobs' ), 'items_list' => __( 'Jobs-Liste', 'posttype_jobs' ), 'items_list_navigation' => __( 'Jobs-Navigation', 'posttype_jobs' ), 'filter_items_list' => __( 'Jobs-Filter', 'posttype_jobs' ), ); $args = array( 'label' => __( 'Job', 'posttype_jobs' ), 'description' => __( 'Hier werden alle Jobseiten aufgebaut.', 'posttype_jobs' ), 'labels' => $labels, 'supports' => array( 'title', 'editor', 'thumbnail', 'revisions', 'custom-fields', 'page-attributes', 'excerpt' ), 'hierarchical' => true, 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'menu_position' => 10, 'menu_icon' => 'dashicons-schedule', 'show_in_admin_bar' => true, 'show_in_nav_menus' => true, 'can_export' => true, 'has_archive' => true, 'exclude_from_search' => false, 'publicly_queryable' => true, 'capability_type' => 'page', ); register_post_type( 'job', $args ); } add_action( 'init', 'custom_posttype_jobs', 0 ); }
Schritt 3: Taxonomien anlegen
Taxonomien dienen dazu, Inhalte in WordPress zu kategorisieren – ähnlich wie „Kategorien“ oder „Schlagwörter“. Für Ihre Jobangebote ist es besonders sinnvoll, zusätzliche Taxonomien zu erstellen, mit denen Besucher filtern können – zum Beispiel nach Jobtyp, Arbeitszeitraum oder Standort.
Typische Beispiele:
- Typ (z. B. Ausbildung, Festanstellung, Praktikum)
- Zeitraum (z. B. befristet, unbefristet)
- Ort (z. B. Hamburg, München)
Wo kommt der Code hin?
Wie beim Custom Post Type fügen Sie den Code in die Datei functions.php
Ihres (Child-)Themes ein – am besten direkt unter dem CPT-Code. Die folgenden Snippets registrieren die gewünschten Taxonomien und verknüpfen sie mit dem CPT „Jobs“:
Codebeispiel für Taxonomien:
/* --- Custom Taxonomy --- */ /* Taxonomy: Typ */ if ( ! function_exists( 'custom_taxonomy_typen' ) ) { function custom_taxonomy_typen() { $labels = array( 'name' => _x( 'Typen', 'Taxonomy General Name', 'taxonomy_typ' ), 'singular_name' => _x( 'Typ', 'Taxonomy Singular Name', 'taxonomy_typ' ), 'menu_name' => __( 'Typ', 'taxonomy_typ' ), 'all_items' => __( 'Alle Typen', 'taxonomy_typ' ), 'parent_item' => __( 'Eltern-Typ', 'taxonomy_typ' ), 'parent_item_colon' => __( 'Eltern-Typ:', 'taxonomy_typ' ), 'new_item_name' => __( 'Typ erstellen', 'taxonomy_typ' ), 'add_new_item' => __( 'Neuen Typ hinzufügen', 'taxonomy_typ' ), 'edit_item' => __( 'Typ bearbeiten', 'taxonomy_typ' ), 'update_item' => __( 'Typ aktualisieren', 'taxonomy_typ' ), 'view_item' => __( 'Typ ansehen', 'taxonomy_typ' ), 'separate_items_with_commas' => __( 'Typen mit Kommas trennen', 'taxonomy_typ' ), 'add_or_remove_items' => __( 'Typen hinzufügen oder entfernen', 'taxonomy_typ' ), 'choose_from_most_used' => __( 'Aus meistgenutzten auswählen', 'taxonomy_typ' ), 'popular_items' => __( 'Beliebte Typen', 'taxonomy_typ' ), 'search_items' => __( 'Suche nach Typ', 'taxonomy_typ' ), 'not_found' => __( 'Nichts gefunden', 'taxonomy_typ' ), 'no_terms' => __( 'Keinen Typ gefunden', 'taxonomy_typ' ), 'items_list' => __( 'Typen-Liste', 'taxonomy_typ' ), 'items_list_navigation' => __( 'Typen-Navigation', 'taxonomy_typ' ), ); $args = array( 'labels' => $labels, 'hierarchical' => true, 'public' => true, 'show_ui' => true, 'show_admin_column' => true, 'show_in_nav_menus' => false, 'show_tagcloud' => true, ); register_taxonomy( 'typen', array( 'job' ), $args ); } add_action( 'init', 'custom_taxonomy_typen', 0 ); } /* Taxonomy: Zeitraum */ if ( ! function_exists( 'custom_taxonomy_zeitraum' ) ) { function custom_taxonomy_zeitraum() { $labels = array( 'name' => _x( 'Zeiträume', 'Taxonomy General Name', 'taxonomy_zeitraum' ), 'singular_name' => _x( 'Zeitraum', 'Taxonomy Singular Name', 'taxonomy_zeitraum' ), 'menu_name' => __( 'Zeitraum', 'taxonomy_zeitraum' ), 'all_items' => __( 'Alle Zeiträume', 'taxonomy_zeitraum' ), 'parent_item' => __( 'Eltern-Zeitraum', 'taxonomy_zeitraum' ), 'parent_item_colon' => __( 'Eltern-Zeitraum:', 'taxonomy_zeitraum' ), 'new_item_name' => __( 'Zeitraum erstellen', 'taxonomy_zeitraum' ), 'add_new_item' => __( 'Neuen Zeitraum hinzufügen', 'taxonomy_zeitraum' ), 'edit_item' => __( 'Zeitraum bearbeiten', 'taxonomy_zeitraum' ), 'update_item' => __( 'Zeitraum aktualisieren', 'taxonomy_zeitraum' ), 'view_item' => __( 'Zeitraum ansehen', 'taxonomy_zeitraum' ), 'separate_items_with_commas' => __( 'Zeiträume mit Kommas trennen', 'taxonomy_zeitraum' ), 'add_or_remove_items' => __( 'Zeiträume hinzufügen oder entfernen', 'taxonomy_zeitraum' ), 'choose_from_most_used' => __( 'Aus meistgenutzten auswählen', 'taxonomy_zeitraum' ), 'popular_items' => __( 'Beliebte Zeiträume', 'taxonomy_zeitraum' ), 'search_items' => __( 'Suche nach Zeitraum', 'taxonomy_zeitraum' ), 'not_found' => __( 'Nichts gefunden', 'taxonomy_zeitraum' ), 'no_terms' => __( 'Keinen Zeitraum gefunden', 'taxonomy_zeitraum' ), 'items_list' => __( 'Zeiträume-Liste', 'taxonomy_zeitraum' ), 'items_list_navigation' => __( 'Zeiträume-Navigation', 'taxonomy_zeitraum' ), ); $args = array( 'labels' => $labels, 'hierarchical' => true, 'public' => true, 'show_ui' => true, 'show_admin_column' => true, 'show_in_nav_menus' => false, 'show_tagcloud' => true, ); register_taxonomy( 'zeitraum', array( 'job' ), $args ); } add_action( 'init', 'custom_taxonomy_zeitraum', 0 ); } /* Taxonomy: Ort */ if ( ! function_exists( 'custom_taxonomy_orte' ) ) { function custom_taxonomy_orte() { $labels = array( 'name' => _x( 'Orte', 'Taxonomy General Name', 'taxonomy_ort' ), 'singular_name' => _x( 'Ort', 'Taxonomy Singular Name', 'taxonomy_ort' ), 'menu_name' => __( 'Ort', 'taxonomy_ort' ), 'all_items' => __( 'Alle Orte', 'taxonomy_ort' ), 'parent_item' => __( 'Eltern-Ort', 'taxonomy_ort' ), 'parent_item_colon' => __( 'Eltern-Ort:', 'taxonomy_ort' ), 'new_item_name' => __( 'Ort erstellen', 'taxonomy_ort' ), 'add_new_item' => __( 'Neuen Ort hinzufügen', 'taxonomy_ort' ), 'edit_item' => __( 'Ort bearbeiten', 'taxonomy_ort' ), 'update_item' => __( 'Ort aktualisieren', 'taxonomy_ort' ), 'view_item' => __( 'Ort ansehen', 'taxonomy_ort' ), 'separate_items_with_commas' => __( 'Orte mit Kommas trennen', 'taxonomy_ort' ), 'add_or_remove_items' => __( 'Orte hinzufügen oder entfernen', 'taxonomy_ort' ), 'choose_from_most_used' => __( 'Aus meistgenutzten auswählen', 'taxonomy_ort' ), 'popular_items' => __( 'Beliebte Orte', 'taxonomy_ort' ), 'search_items' => __( 'Suche nach Ort', 'taxonomy_ort' ), 'not_found' => __( 'Nichts gefunden', 'taxonomy_ort' ), 'no_terms' => __( 'Keinen Ort gefunden', 'taxonomy_ort' ), 'items_list' => __( 'Orte-Liste', 'taxonomy_ort' ), 'items_list_navigation' => __( 'Orte-Navigation', 'taxonomy_ort' ), ); $args = array( 'labels' => $labels, 'hierarchical' => true, 'public' => true, 'show_ui' => true, 'show_admin_column' => true, 'show_in_nav_menus' => false, 'show_tagcloud' => true, ); register_taxonomy( 'orte', array( 'job' ), $args ); } add_action( 'init', 'custom_taxonomy_orte', 0 ); }
Schritt 4: Permalinks speichern
Nachdem Sie den Custom Post Type „Jobs“ und die zugehörigen Taxonomien erfolgreich in Ihrer functions.php
eingebunden haben, müssen Sie die sogenannten Permalinks neu speichern. Das ist ein wichtiger Schritt, damit WordPress die neuen Inhalte korrekt verarbeitet und alle URLs der Stellenanzeigen erreichbar sind.
Warum ist das notwendig?
Nach dem Hinzufügen neuer Inhaltstypen erkennt WordPress die zugehörigen URL-Strukturen (z. B. /jobs/jobtitel
) nicht sofort. Ohne das Speichern der Permalinks erscheinen häufig Fehlermeldungen wie „Seite nicht gefunden“, wenn man einen einzelnen Job aufruft.
Was müssen Sie tun?
- Gehen Sie im WordPress-Backend zu Einstellungen → Permalinks
- Nehmen Sie keine Änderungen vor
- Klicken Sie einfach unten auf den Button „Änderungen übernehmen“
Dieser Vorgang reicht aus, um die Permalink-Struktur neu zu registrieren. Damit sind alle neuen Inhalte wie CPT „Jobs“ und Ihre Taxonomien korrekt erreichbar.
Tipp: Dieser Schritt ist auch dann erforderlich, wenn Sie später weitere Taxonomien oder benutzerdefinierte Slugs hinzufügen.
Schritt 5: Import vorbereiten – Datenquelle angeben
Sobald Ihr Custom Post Type und die Taxonomien eingerichtet sind, können Sie mit dem Import Ihrer Stellenangebote aus Personio beginnen. Dafür nutzen Sie das Plugin WP All Import, das Sie zuvor installiert haben.
So starten Sie den Import:
- Gehen Sie im WordPress-Backend zu
All Import → New Import
- Wählen Sie die Option „Download a file“
- Klicken Sie auf „From URL“
- Geben Sie hier den XML-Link ein, den Sie von Personio erhalten haben
- Klicken Sie anschließend auf „Download“
Wichtig: Den XML-Link erhalten Sie in Ihrem Personio-Account unter den Integrationseinstellungen. Fragen Sie ggf. bei Ihrem Personio-Support nach, falls der Link nicht direkt auffindbar ist.
Nachdem die Datei geladen wurde, öffnet sich ein neues Fenster zur Auswahl des Ziel-Inhaltstyps. Dort wählen Sie:
- „Create new posts in“ → wählen Sie
Jobs
(oder wie Ihr CPT heißt)
Klicken Sie anschließend auf „Continue to Step 2“.
Nun erscheint eine Liste mit XML-Knoten. Hier wählen Sie den Knoten, der die eigentlichen Stellenanzeigen enthält. Meist heißt dieser <position>
. Dieser Knoten steht für jeden einzelnen Job mit allen zugehörigen Informationen.
Beispiel: Wenn Ihre XML-Datei mehrere <position>
-Einträge enthält, wird jeder davon ein separater Job in WordPress.
Klicken Sie nun auf „Continue to Step 3“, um mit dem Mapping der Inhalte fortzufahren.
Schritt 6: Inhalte zuordnen
In Schritt 3 des Importvorgangs legen Sie fest, welche Inhalte aus der XML-Datei an welcher Stelle im WordPress-Jobeintrag erscheinen sollen. WP All Import stellt dafür eine benutzerfreundliche Oberfläche bereit, die stark an den WordPress-Editor erinnert.
Beispiel: Titel und Beschreibung
Sie sehen links die verfügbaren Felder aus Ihrer XML-Datei. Rechts befindet sich ein Editor mit Eingabefeldern für den Titel, Inhalt usw. Um zum Beispiel den Jobtitel anzugeben:
- Ziehen Sie das XML-Feld
<name>
per Drag & Drop in das Feld „Title“ - Oder kopieren Sie den Platzhalter
{name[1]}
manuell in das Feld
Dasselbe machen Sie für den Inhalt des Beitrags. Ziehen Sie z. B. <description>
in das große Textfeld unterhalb.
Sie können dort auch Überschriften, Formatierungen oder Layout-Elemente ergänzen – ähnlich wie im WordPress-Seiteneditor.
Bewerbungs-Button einfügen
Ein wichtiger Teil des Imports ist ein Button, über den sich Bewerber direkt zum passenden Formular auf Ihrer Personio-Seite weiterleiten lassen.
Fügen Sie diesen Code am Ende des Textfelds im Reiter „Text“ ein:
<a href="https://IHRESEITE.jobs.personio.de/job/{id[1]}?language=de#apply">Jetzt bewerben</a>
Für englischsprachige Seiten verwenden Sie:
<a href="https://IHRESEITE.jobs.personio.de/job/{id[1]}?language=en#apply">Apply now</a>
Hinweis: Ersetzen Sie IHRESEITE
durch Ihre tatsächliche Personio-Subdomain. Der Platzhalter {id[1]}
sorgt dafür, dass automatisch die richtige ID aus dem Datensatz verwendet wird.
Vorschau nutzen
Mit dem Button „Preview“ können Sie überprüfen, wie der fertige Inhalt für einen Beispiel-Job aussieht. Die Vorschau zeigt den strukturellen Inhalt, jedoch ohne Design.
Wenn alles passt, klicken Sie auf „Continue to Step 4“, um die Zuordnung der Taxonomien vorzunehmen.
Schritt 7: Taxonomien zuordnen
In Schritt 4 des Imports können Sie die bereits angelegten Taxonomien wie „Typ“, „Zeitraum“ und „Ort“ mit den passenden Feldern aus der XML-Datei verknüpfen. So sorgen Sie dafür, dass jede Stellenanzeige korrekt einsortiert wird – und auf Ihrer Website gefiltert oder angezeigt werden kann.
So funktioniert die Zuordnung:
Scrollen Sie in Step 4 nach unten zum Abschnitt „Taxonomies, Categories, Tags“. Dort finden Sie eine Liste Ihrer registrierten Taxonomien – zum Beispiel:
- typ
- zeitraum
- ort
1. Taxonomie auswählen und aktivieren
Haken Sie die gewünschte Taxonomie an – z. B. „typ“. Es öffnet sich ein Drop-Bereich, in den Sie ein XML-Feld hineinziehen können (z. B. {employmentType[1]}
).
2. Drag & Drop der passenden Datenfelder
Ziehen Sie das XML-Feld in das Eingabefeld für die jeweilige Taxonomie.
Beispiel:
<employmentType>
→ Taxonomie „typ“<schedule>
→ Taxonomie „zeitraum“<office>
→ Taxonomie „ort“
3. Sprachmapping aktivieren (optional)
Viele XML-Felder von Personio sind auf Englisch – etwa „permanent“, „trainee“, „intern“ usw. Damit Sie diese Begriffe in deutscher Sprache anzeigen lassen können, aktivieren Sie die Funktion:
- „Enable Mapping for this field“ (Checkbox unter dem Eingabefeld)
Anschließend erscheint eine Tabelle mit zwei Spalten. Links stehen die übermittelten Begriffe, rechts geben Sie die deutschen Bezeichnungen ein.
Beispiel-Mapping für „employmentType“:
- permanent → Festanstellung
- trainee → Ausbildung/Trainee
- full-time → Vollzeit
- part-time → Teilzeit
- intern → Praktikum
- freelance → Freiberuflich
- full-or-part-time → Voll- oder Teilzeit
Hinweis: Das Mapping funktioniert pro Taxonomie und bleibt gespeichert, solange Sie das Importprofil nicht löschen. Neue Begriffe, die später auftauchen, können jederzeit ergänzt werden.
Mapping für „Ort“
In den meisten Fällen benötigen Sie hier kein Mapping, da Städte oder Länder bereits korrekt im XML übermittelt werden (z. B. „Berlin“, „Hamburg“, „Remote“ etc.).
Wenn Sie alle Taxonomien zugeordnet haben, klicken Sie auf „Continue“ und gehen zum letzten Schritt: dem eigentlichen Importvorgang.
Schritt 8: Vorlage speichern
Bevor Sie den eigentlichen Import ausführen, lohnt es sich, Ihre Konfiguration als Vorlage zu sichern. So müssen Sie die Zuordnungen und Einstellungen beim nächsten Import nicht neu vornehmen – insbesondere bei regelmäßigen Aktualisierungen ein großer Zeitgewinn.
Wann ist das sinnvoll?
- Wenn Sie regelmäßig neue Stellenangebote importieren möchten
- Wenn Sie mehrere Websites oder Sprachversionen betreuen
- Wenn Sie das Setup später anpassen oder erweitern wollen
So speichern Sie die Vorlage:
- Scrollen Sie im letzten Schritt (vor dem Importstart) ganz nach unten
- Aktivieren Sie das Kästchen „Save settings as a template“
- Geben Sie der Vorlage einen eindeutigen Namen – z. B.
Job-Import DE
oderPersonio-Stellenanzeigen
Beim nächsten Import können Sie diese Vorlage direkt im ersten Schritt auswählen. Dadurch werden sämtliche Zuordnungen für Felder, Taxonomien und Mappings automatisch geladen – inklusive Importziel, Einstellungen und XML-Struktur.
Tipp: Sie können auch mehrere Vorlagen anlegen – zum Beispiel eine für Deutsch, eine für Englisch oder eine speziell für bestimmte Standorte oder Unternehmensbereiche.
Schritt 9: Import ausführen, prüfen und testen
Nun sind alle Einstellungen abgeschlossen – Zeit, den eigentlichen Importvorgang zu starten. Dabei bestimmt WP All Import, welche Inhalte importiert werden, ob bestehende Einträge aktualisiert oder gelöscht werden und wie neue Inhalte erkannt werden.
1. Eindeutige Zuordnung per „Unique Identifier“
Im Bereich „Record Matching“ legen Sie fest, woran WP All Import erkennen soll, ob ein Job bereits vorhanden ist oder neu angelegt werden muss. Nutzen Sie dafür ein Feld, das für jede Stelle einzigartig ist – am besten:
{id[1]}
2. Verhalten bei erneutem Import definieren
Sie können festlegen, was bei einem erneuten Import mit bereits bestehenden Datensätzen passieren soll. Die wichtigsten Optionen:
- Update existing posts with changed data in your file
→ Aktualisiert nur Einträge, bei denen sich etwas geändert hat - Delete posts that are no longer present in your file
→ Entfernt Einträge aus WordPress, die nicht mehr in der Personio-Datei enthalten sind - Create new posts from records newly present in your file
→ Fügt neue Jobs automatisch hinzu
Tipp: Sie können über eine Kombination dieser Optionen auch dafür sorgen, dass Ihre Seite immer 1:1 den aktuellen Stand aus Personio widerspiegelt – inklusive automatischer Löschung abgelaufener Jobs.
3. Import starten
Klicken Sie nun auf „Confirm & Run Import“ oder „Import starten“. Der Prozess läuft nun live durch – je nach Datenmenge kann das wenige Sekunden oder mehrere Minuten dauern.
- Schließen Sie das Fenster nicht während des Imports
- Laden Sie die Seite nicht neu
4. Ergebnisse prüfen
Nach Abschluss finden Sie alle importierten Jobs unter dem Menüpunkt „Jobs“ im WordPress-Backend.
Jeder Eintrag enthält die zugeordneten Inhalte, Taxonomien und – falls eingerichtet – den Bewerbungs-Button mit funktionierendem Link zum jeweiligen Personio-Formular.
Design & Layout
Die Darstellung der Stellenanzeigen hängt von Ihrem Theme ab. Sie können mithilfe von Templates, Block-Editor oder Custom Fields (z. B. mit ACF) die Ausgabe frei gestalten – oder Plugins für Archivseiten, Filter oder Suchfunktionen nutzen.
Mehrsprachigkeit mit WPML
Für mehrsprachige Seiten benötigen Sie zusätzlich das Plugin „WPML All Import“. In Schritt 3 erscheint dann eine Sprachauswahl. Importieren Sie idealerweise zuerst die Hauptsprache.
Fazit
Die Integration von Personio in WordPress ist mit den richtigen Tools und ein wenig technischem Know-how gut umsetzbar – und spart langfristig viel Zeit. Mit einem automatisierten Import, passenden Taxonomien und einem individuellen Layout schaffen Sie eine professionelle Karriereseite, die nicht nur optisch überzeugt, sondern auch funktional alles bietet, was moderne Bewerber erwarten.