Legen Sie den Titel des Beitrags basierend auf dem ersten h2-Element im Inhaltsabschnitt fest

Ich habe einen Front-End-Editor eingerichtet, damit Benutzer Posts erstellen können, und ich möchte es so einfach wie möglich machen, Posts mit möglichst wenigen Feldern zu erstellen. Ist es möglich, den Beitragstitel basierend auf dem ersten h2-Element zu generieren, das im Inhaltsfeld angezeigt wird? Wie würde ich das tun?

Solutions Collecting From Web of "Legen Sie den Titel des Beitrags basierend auf dem ersten h2-Element im Inhaltsabschnitt fest"

Wenn Sie dies auf der PHP-Seite handhaben können, können Sie die h2 Tags mit regulären Ausdrücken aus dem Inhalt ziehen.

PHP-VERSION

Testinhalt

 $content = "

This is H2 Content

This is p content

Random Content

This is another H2 section

This the third H2 section

";

Greifen Sie jeden Text in H2s

 preg_match_all('#

(.*?)

#', $content, $matches); // Merge the first 2 matches $potential_title = implode ( ' - ', array_slice($matches[0], 0, 2));

Wenn wir etwas haben …

 if( ! empty ( $potential_title ) ) { 

Entfernen Sie HTML aus dem verbleibenden Inhalt

  $cleaner_title = strip_tags( $potential_title ); 

Bereiten Sie das Post-Titel-Update vor

  $my_post_updates = array( 'ID' => $post_id, 'post_title' => $cleaner_title, ); // Update the post into the database wp_update_post( $my_post_updates ); } 

JS VERSION

Die Javascript-Version ist ähnlich, Sie müssten lediglich die Formularübermittlung abfangen, den Inhalt abrufen, die Ergebnisse analysieren und die Daten dann weiterleiten.

Dadurch wird nur das Ergebnis des Analysierens von Testinhalten gemeldet.

 // test content var content = "

This is H2 Content

This is PPP content

Random Content

This is another H2 section

This the third H2 section

"; // variables to store regEx results. var match, regex = /

(.*?)< \/h2>/ig, matches = []; // get all the matches and put in array while (match = regex.exec(content)) { matches.push( match[1] ); } // if we have any... if( matches.length ) { // pull the first 2 and join them together var title = matches.slice ( 0, 2 ).join ( ' - ' ); // send this along with your form submission alert(title); }