Fügen Sie ID dynamisch zu Überschrift-Tags hinzu

Wie füge ich dynamisch ein ID-Attribut zu jedem Überschrift-Tag auf einer WordPress-Website mit PHP hinzu? Ich wollte es so machen, dass ich für jedes Überschrift-Tag (h1, h2, h3, h4, h5, h6) eine eindeutige ID angehängt habe, so dass es wie

This Is Sparta

würde:

This Is Sparta

Also kann ich mit Go to This Is Sparta

Ich suche seit Stunden nach einer Lösung für dieses Problem, und ich kann nichts finden. Wenn also jemand helfen könnte, würde alles geschätzt werden!

Wenn es manuell gemacht werden muss, ist alles in Ordnung, ich brauche nur einen einfacheren Weg, dies für einen Kunden zu tun.

Solutions Collecting From Web of "Fügen Sie ID dynamisch zu Überschrift-Tags hinzu"

Ich hatte dieses Dilemma, und ich fand dieses Plugin: Fügen Sie IDs zu Header Tags hinzu , und es funktioniert gut für Beiträge. (Ich bin in keiner Weise mit dem Plugin verbunden).

Damit es auch für Seiten funktioniert, musste ich den Code ändern, der auf dieser Supportseite erklärt wird: Keine IDs hinzufügen

Es scheint, dass der Entwickler nicht aktiv ist, und bietet keine Unterstützung für das Plugin, wenn Sie also einige Probleme finden, müssen Sie diese leider selbst beheben. Aber das Plugin ist eine gute Ausgangsbasis.

In diesem folgenden Code habe ich die Überprüfung “is_single ()” entfernt, so dass der Code auf beiden Seiten und Posts funktioniert. Außerdem habe ich einen Teil des “Extra” -Codes entfernt, um ihn der Frage von OP anzupassen.

 //Author URI: http://stephanis.info add_filter( 'the_content', 'add_ids_to_header_tags' ); function add_ids_to_header_tags( $content ) { $pattern = '#(?P< (?Ph\d)(?P[^>]*)>(?P[^< ]*))#i'; if ( preg_match_all( $pattern, $content, $matches, PREG_SET_ORDER ) ) { $find = array(); $replace = array(); foreach( $matches as $match ) { if ( strlen( $match['tag_extra'] ) && false !== stripos( $match['tag_extra'], 'id=' ) ) { continue; } $find[] = $match['full_tag']; $id = sanitize_title( $match['tag_contents'] ); $id_attr = sprintf( ' id="%s"', $id ); $replace[] = sprintf( '< %1$s%2$s%3$s>%4$s', $match['tag_name'], $match['tag_extra'], $id_attr, $match['tag_contents']); } $content = str_replace( $find, $replace, $content ); } return $content; } 

Es gibt eine function in wp-includes/formatting.php namens sanitize_title_with_dashes, die Sie verwenden können.

 

< ?php the_title(); ?>

Wenn Ihr Titel This Is Sparta lautet, This Is Sparta die Ausgabe this-is-sparta .

Sie können den the_content und dann alle Header-Tags im Inhalt finden und IDs hinzufügen.

Um Header-Tags im Inhalt zu finden, können Sie entweder Regex-Ausdrücke oder etwas wie simple_html_dom verwenden. Schau dir das an