在 WordPress 内容中为主题标签添加 WordPress 分类标签
Add A WordPress Taxonomy Tag for Hashtags in WordPress Content
WordPress 分类有助于 SEO,它们使具有大量 post 的网站易于分类。每当 post 保存时,我们如何自动将任何以“#”开头的单词转换为 WordPress 标签。
我的站点有 100 个 post,作者不喜欢放置标签。使用主题标签系统可以确保他们喜欢放置标签。
对于每个 WordPress post 保存,我想找到以“#”开头的单词,例如 'An #Apple A Day' 并将#Apple 转换为默认的 WordPress 标签。此外,我想为所有 post 类型执行此操作。
我在评论中找到了如何做的很好的解释,但是因为我不擅长 PHP,所以我无法用 WordPress post 的内容来做。
我尝试用 wp_insert_post_data 来做,但它不起作用。
首先你必须为 wordpress 构建一个插件,它可以挂接到已发布的 post 或更新 post 你可以参考 this
之后,只要他们在 post_content 上找到 hastag,您就可以添加标签,代码如下
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 );
如果你使用 frontier post 也许你可以使用这个
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
并将 post 中的所有 hastag 更改为 url 您可以使用这样的代码
function old_wp_content( $content ) {
$content = preg_replace('/ #([A-Za-z0-9\/\.]*)/', ' <a target=\"_blank\" href=\"https://milyin.com/hashtag/\"></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/\"></a>', $content);
return $content;
}
add_filter( 'the_content', 'old_wp_content' );
WordPress 分类有助于 SEO,它们使具有大量 post 的网站易于分类。每当 post 保存时,我们如何自动将任何以“#”开头的单词转换为 WordPress 标签。
我的站点有 100 个 post,作者不喜欢放置标签。使用主题标签系统可以确保他们喜欢放置标签。
对于每个 WordPress post 保存,我想找到以“#”开头的单词,例如 'An #Apple A Day' 并将#Apple 转换为默认的 WordPress 标签。此外,我想为所有 post 类型执行此操作。
我在评论中找到了如何做的很好的解释,但是因为我不擅长 PHP,所以我无法用 WordPress post 的内容来做。
我尝试用 wp_insert_post_data 来做,但它不起作用。
首先你必须为 wordpress 构建一个插件,它可以挂接到已发布的 post 或更新 post 你可以参考 this
之后,只要他们在 post_content 上找到 hastag,您就可以添加标签,代码如下
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 );
如果你使用 frontier post 也许你可以使用这个
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 并将 post 中的所有 hastag 更改为 url 您可以使用这样的代码
function old_wp_content( $content ) {
$content = preg_replace('/ #([A-Za-z0-9\/\.]*)/', ' <a target=\"_blank\" href=\"https://milyin.com/hashtag/\"></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/\"></a>', $content);
return $content;
}
add_filter( 'the_content', 'old_wp_content' );