首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将标题转换为标签- Wordpress

将标题转换为标签- Wordpress
EN

Stack Overflow用户
提问于 2012-10-14 22:54:13
回答 1查看 382关注 0票数 0

我需要将标题转换为标签。我想控制它的长度。我不希望标签太短或太长,如果标签不存在,我还需要在标签前面添加一个散列标签(#),但要清除任何其他字符。

下面的代码可以工作,但它只将哈希标签应用于前两个标签。

代码语言:javascript
复制
$title = get_the_title($post_id);

$splittotags = explode(" ", $title);

foreach ($splittotags as $atag){

     if( strlen($atag) > 4 && strlen($atag) < 15 ){
         $first = $atag[0];

         if($first == '#'){
             $atagg = ereg_replace("[^A-Za-z0-9#]", "", $atag );
         }else{
             $atagg = ereg_replace("[^A-Za-z0-9#]", "", "#".$atag );
         }

         if($atag !=NULL){
       wp_set_object_terms($post_id, $atagg, 'post_tag', true );
         }
  }

}

我还在考虑用不好的标记定义一个数组,就像这样:

代码语言:javascript
复制
 $not_tag = array("!", "by", "me", "auto", "mine", "by");

然后这样做:

代码语言:javascript
复制
 if( !in_array($atag, $not_tag){

代码在save_post操作上运行

做这件事的最好方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2012-10-15 02:53:21

我不明白你所说的“它只将散列标签应用于前两个标签”是什么意思。是您的函数无法运行wp_set_object_terms,还是该函数运行时标记分配不正确?

我看不出你的函数失败的任何原因。可能这一行,if($atag !=NULL){,并没有像您期望的那样工作。也许NULL并不像您想的那样工作。例如,空字符串不是NULL ('' !== NULL)。

这是未经测试的,但我认为它是一个比你更干净的功能,我非常确定它会工作。

代码语言:javascript
复制
$title = get_the_title($post_id);
$splittotags = explode(" ", $title);
$tags = array();
foreach ($splittotags as $atag){
  $atagg = preg_replace("/[^A-Za-z0-9]/", "", $atag ); // this will clear any existing hash characters
  if(!empty($atagg) && strlen($atagg) > 4 && strlen($atagg) < 15){
    $tags[] = '#'.$atagg;
  }
  $atagg = ''; // Clear $atagg. I'm paranoid.
}
wp_set_object_terms($post_id, $tags, 'post_tag', true );

您还可以考虑使用帖子名称-- global $post; echo $post->post_name--因为它已经被清理过了。你只需要在破折号而不是空格上换行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12883351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档