web-dev-qa-db-ja.com

コンテンツセクションの最初のh2要素に基づいて投稿のタイトルを設定する

ユーザーが投稿を作成できるようにフロントエンドエディタを設定しています。できるだけ少ないフィールドで投稿を作成できるように、できるだけ簡単にしたいと思います。コンテンツフィールドに表示される最初のh2要素に基づいて投稿のタイトルを生成することは可能ですか?どのようにこれをしますか?

1
user304165

これをPHP側で処理できる場合は、 正規表現 を使用してコンテンツからh2タグを取得することができます。

PHPバージョン

テスト内容

$content = "<h2>This is H2 Content</h2><p>This is p content</p>Random Content<h2>This is another H2 section</h2><b><h2>This the third H2 section</h2></b>";

H2S内の任意のテキストをつかむ

preg_match_all('#<h2>(.*?)</h2>#', $content, $matches);

// Merge the first 2 matches

$potential_title = implode ( ' - ', array_slice($matches[0], 0, 2));

私たちが何かを持っているなら...

if( ! empty ( $potential_title ) ) {

残りのコンテンツからHTMLを削除する

    $cleaner_title = strip_tags( $potential_title );

投稿タイトルの更新を準備する

    $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

これのJavascriptバージョンは似ています、あなたはただフォーム提出を傍受し、内容をつかみ、結果を解析し、そしてデータを一緒に渡すことを要求されるでしょう。

これはテストコンテンツの解析結果を警告するだけです。

// test content    
var content = "<h2>This is H2 Content</h2><p>This is PPP content</p>Random Content<h2>This is another H2 section</h2><b><h2>This the third H2 section</h2></b>";

// variables to store regEx results. 
var match, regex = /<h2>(.*?)<\/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);
}
1
jgraup