Pfandfinder
Lieutenant
- Registriert
- Nov. 2020
- Beiträge
- 650
Hi,
Ich habe einen WordPress Blog mit einigen Beiträgen, die unter anderem mit Überschriften aufgeteilt sind (einfach nur <h2>). Ich suche ein Plugin was diese Überschriften automatisch erkennt und am Anfang vom Blog ein Inhaltsverzeichnis anzeigen kann und dann auch zu den Absätzen verlinken kann. Dazu muss es dann vermutlich jeder Überschrift eine id zuweisen. Doch ich finde keines was das so kann. Bei allen die ich getestet habe müsste ich in ALLEN Beiträgen manuell bei den Überschriften Änderungen vornehmen damit das funktioniert. Das wäre aber zu viel Aufwand.
Gibt es dafür echt keine Lösung ?
Ich habe mit ChatGPT mal ein Script versucht zu erstellen was die ids hinzugefügt, aber mit DOM gibt es dann Probleme mit Umlauten und das erstellt eine HTML Seite mit "<!DOCTYPE html PUBLIC"...
Ich habe einen WordPress Blog mit einigen Beiträgen, die unter anderem mit Überschriften aufgeteilt sind (einfach nur <h2>). Ich suche ein Plugin was diese Überschriften automatisch erkennt und am Anfang vom Blog ein Inhaltsverzeichnis anzeigen kann und dann auch zu den Absätzen verlinken kann. Dazu muss es dann vermutlich jeder Überschrift eine id zuweisen. Doch ich finde keines was das so kann. Bei allen die ich getestet habe müsste ich in ALLEN Beiträgen manuell bei den Überschriften Änderungen vornehmen damit das funktioniert. Das wäre aber zu viel Aufwand.
Gibt es dafür echt keine Lösung ?
Ich habe mit ChatGPT mal ein Script versucht zu erstellen was die ids hinzugefügt, aber mit DOM gibt es dann Probleme mit Umlauten und das erstellt eine HTML Seite mit "<!DOCTYPE html PUBLIC"...
PHP:
while ($row = $result->fetch_assoc()) {
$postId = $row['ID'];
$postContent = $row['post_content'];
// HTML-Code analysieren und Überschriften aktualisieren
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML($postContent);
libxml_clear_errors();
$xpath = new DOMXPath($dom);
$headings = $xpath->query("//h2 | //h3");
$headingId = 1;
foreach ($headings as $heading) {
// Überprüfen, ob die Überschrift bereits eine ID hat
if (!$heading->hasAttribute('id')) {
$heading->setAttribute('id', $headingId);
$headingId++;
}
}
// Aktualisierten HTML-Code in die Datenbank schreiben
$updatedContent = $dom->saveHTML();
$updatedContent = $conn->real_escape_string($updatedContent);
$updateSql = "UPDATE MFRs7y6H_posts SET post_content = '$updatedContent' WHERE ID = $postId";
$conn->query($updateSql);
}