我正在制作一个插件,需要在其中编辑帖子内容中的H2标签。
我已经做了两天了,但我的php知识太有限,无法解决这个问题。。
我想要的是回报所有<h2>
标记为<h2 id="$headings_array_stripped">
我似乎不知道该怎么做。我试过与foreach
循环和preg_replace
, str_replace
和排序。
问题似乎在于$headings_open_tag_array
都一样(<h2>
) , 所以str_replace
, 例如,不会循环遍历它们,但只更改所有<h2>
\'s到的第一个对应值$headings_array_stripped
:
str_replace( $headings_open_tag_array, $headingsarray_stripped, $article )
代码:
function replace_content_jump_menu() {
// Get metadata attached to the plugin
$jump_menu_check = get_post_meta( get_the_ID(), \'jump-menu\', true );
// Get the content
$article = get_the_content();
// Retrieve all <h2>header</h2> tags (with content) and put them in an array
preg_match_all( \'|<h2>(.*)</h2>|iU\', $article, $headings_array );
// Strip h2 tags and make lowercase
$headings_array_stripped = preg_replace( \'/\\W+|[0-9]+|\\<h2\\>|\\<\\/h2\\>/\', \'\', array_map( \'strtolower\', $headings_array[0] ) );
// Retrieve all <h2> tags from the_content and put them in an array
preg_match_all( \'|<h2>|iU\', $article, $headings_open_tag_array );
// preg_replace? str_replace? foreach()?
};
add_filter( \'the_content\', \'replace_content_jump_menu\' );