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