сначала вы должны создать плагин для WordPress, который подключается к опубликованному сообщению или сообщению об обновлении, на которое вы можете ссылаться this
, после этого вы можете добавлять теги всякий раз, когда они находят hastag в post_content икод выглядит следующим образом
function post_published_notification( $ID, $post ) {
$content = $post->post_content;
preg_match_all('/( #\w+)/', $content, $matches, PREG_PATTERN_ORDER);
if(isset($matches[1])){
foreach($matches[1] as $matchKey){
wp_set_post_tags( $ID, trim($matchKey), true);
}
}
}
add_action( 'publish_post', 'post_published_notification', 10, 2 );
если вы используете пограничный пост, возможно, вы можете использовать этот
function post_published_from_frontier($my_post){
$content = $my_post->post_content;
$ID = $my_post->ID;
preg_match_all('/( #\w+)/', $content, $matches, PREG_PATTERN_ORDER);
if(isset($matches[1])){
foreach($matches[1] as $matchKey){
wp_set_post_tags( $ID, trim($matchKey), true);
}
}
}
add_action('frontier_post_post_save', post_published_from_frontier, 10 ,2 );
, вы можете изменить параметр приоритета add_action, см. this ичтобы изменить весь хэстаг в посте на url, вы можете использовать код, подобный этому
function old_wp_content( $content ) {
$content = preg_replace('/ #([A-Za-z0-9\/\.]*)/', ' <a target=\"_blank\" href=\"https://milyin.com/hashtag/$1\">$1</a>', $content);
return $content;
}
add_filter( 'the_content', 'old_wp_content' );
, поэтому, если мы объединим весь код в один плагин, мы сможем использовать его следующим образом
<?php
function post_published_notification( $ID, $post ) {
$content = $post->post_content;
preg_match_all('/( #\w+)/', $content, $matches, PREG_PATTERN_ORDER);
if(isset($matches[1])){
foreach($matches[1] as $matchKey){
wp_set_post_tags( $ID, trim($matchKey), true);
}
}
}
add_action( 'publish_post', 'post_published_notification', 10, 2 );
function post_published_from_frontier($my_post){
$content = $my_post->post_content;
$ID = $my_post->ID;
preg_match_all('/( #\w+)/', $content, $matches, PREG_PATTERN_ORDER);
if(isset($matches[1])){
foreach($matches[1] as $matchKey){
wp_set_post_tags( $ID, trim($matchKey), true);
}
}
}
add_action('frontier_post_post_save', post_published_from_frontier, 10 ,2 );
function old_wp_content( $content ) {
$content = preg_replace('/ #([A-Za-z0-9\/\.]*)/', ' <a target=\"_blank\" href=\"https://milyin.com/hashtag/$1\">$1</a>', $content);
return $content;
}
add_filter( 'the_content', 'old_wp_content' );