使用标签符号作为WordPress分类标签的前缀,如Twitter

时间:2019-10-16 作者:Aditya Agarwal

如何在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);
但什么都没用。。。

1 个回复
最合适的回答,由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\');


相关推荐

使PHP显示在类别页面中的问题

我使用此代码在帖子顶部显示社交媒体共享链接。目前,它们在我的页面和帖子上显示良好。有没有办法让它也显示在我的分类页面上?另一个可行的选择是让代码显示在H1和内容下方的任何地方,我认为没有任何页面不需要这些按钮,所以这可能是更简单的解决方案。任何指导都将不胜感激☺️function crunchify_social_sharing_buttons($content) { global $post; if(is_singular() || is_home()){ &#x