如何在WordPress网站中的每个标记之前添加标签符号?我的意图是像“Apple”这样的WordPress标签应该转换为“Apple”
我是网站的所有者/开发商https://milyin.com/ 我想让事情变得更加社会化。因此,我希望我的网站更像推特。在这个答案的帮助下,我能够制作一个系统,让我的网站的作者可以在实际内容中使用哈希标签,将它们转换为实际的标签。但代码没有前缀“#”符号。您可以查看我的帖子,以便更好地了解它的工作原理。。。https://milyin.com/how-to-become-an-entrepreneur-with-no-money-and-experience/
我希望代码确保如果WordPress标记中已经有一个Hashtag,那么它不应该添加另一个标记。
下面是我从帖子内容生成标签的代码。这些标记从不在前缀中包含hashtag符号。
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 );
这段代码基本上是在Frontier post插件的基础上运行的
answer 帮我得到密码。但不知何故,对我来说,这段代码在实际帖子中并没有在它们前面加上标签符号。。。
我试图编辑wp\\u set\\u post\\u标记行并删除trim()
没用,我试过了\'#\'.$matchKey
但这也没用。。。
我基本上觉得问题在于wp\\u set\\u post\\u标记,所以我从上面的代码中编辑了这一行。我第一次尝试这个代码,
wp_set_post_tags( $ID, $matchKey, true);
然后这个
wp_set_post_tags( $ID, \'#\'.$matchKey, true);
但什么都没用。。。
最合适的回答,由SO网友:Aditya Agarwal 整理而成
可以
所以这个问题已经很老了,我不得不真心实意地努力寻找解决方案,但现在我知道了,怎么做。这是诀窍。
对于SEO和UX来说,最好不要在标记本身中包含Hashtag,因为当我们打开分类url时,浏览器会看到“#”符号并将其解释为htmlid=""
并因此在内容中搜索该ID。
更好的方法是:1。)扫描post查找以“#”2开头的所有单词。)将它们转换为标记,省略哈希符号,因为正如我所解释的,哈希符号可能会很混乱。3.)在前端帖子内容中,使用另一个功能将以#开头的每个单词转换为url,比如说#Apple,将保存为一个名为Apple的标记,但在前端它将显示为#Apple,单击#Apple将带您到分类的url
function Milyin_Generate_Hashtags($my_post){
$content = $my_post->post_content;
$ID = $my_post->ID;
preg_match_all(\'/\\B(\\#[a-zA-Z]+\\b)/\', $content, $matches, PREG_PATTERN_ORDER);
if(isset($matches[1])){
foreach($matches[1] as $matchKey){
wp_set_post_tags( $ID, $matchKey, true);
}
}
}
add_action(\'post_save\', \'Milyin_Generate_Hashtags\', 10 ,2 );
function Mentions($content) {
$content = preg_replace(\'/([^a-zA-Z-_&])#([a-zA-Z_]+)/\', "$1<a class=\\"Milyin-Hashtags\\" href=\\"https://milyin.com/hashtag/$2\\" target=\\"_blank\\" >#$2</a>", $content);
return $content;
}
add_filter(\'the_content\', \'Mentions\');