【问题标题】:Wordpress Validate New Nicename/SlugWordpress 验证新的 Nicename/Slug
【发布时间】:2014-04-22 12:45:06
【问题描述】:

我编写了一个自定义“编辑帐户”脚本,允许 Wordpress 用户更新他们的 Wordpress 帐户。一切都很好,除了我似乎找不到更新用户的 nicename 的方法,它也兼作用户的 URL slug(通过 get_author_posts_url 函数)。这会导致问题,因为当用户更改他们的名字时,他们的 slug 仍然包含他们原来的名字——而不是新名字。

我知道sanitize_title 函数会生成新的 nicename,但我不知道如何验证它是否唯一,如果不是,则在将其输入数据库之前对其进行修改。我想知道 Wordpress 有哪些内置函数来处理这个问题。我知道我可以编写自己的脚本来执行此操作,但我更愿意使用 Wordpress 函数。我在 WP 文档中的任何地方都找不到这个。谢谢!

【问题讨论】:

    标签: wordpress


    【解决方案1】:

    这是我写的一个内置函数的函数:

    function new_user_slug($string){
       //GENERATE NEW SLUG
       $slug=sanitize_title($string);
    
       //MAKE SURE SLUG IS UNIQUE
       $result=mysql_query("SELECT * FROM wp_users WHERE user_nicename='$slug'");
       if(mysql_num_rows($result)==0){
        return $slug;
       }else{
        $counter=2;
        $kill=0;
        while($kill==0){
            $mod_slug=$slug."-".$counter;
               $result=mysql_query("SELECT * FROM wp_users WHERE user_nicename='$mod_slug'");
               if(mysql_num_rows($result)==0){
                $kill=1;
               }else{
                $counter++;
               }
           }
           return $mod_slug;
        }
    }
    

    这需要一个字符串(用户的更新名称)并将其转换为默认的 slug。然后它根据数据库检查 slug 以查看它是否是唯一的。如果是,则返回蛞蝓。如果不是,它会进入一个迭代循环,逐步改变 slug 直到它是唯一的。

    【讨论】:

      【解决方案2】:

      试试这个:

      wp_unique_post_slug( $slug, $post_ID, $post_status, $post_type, $post_parent )
      

      来源:https://codex.wordpress.org/Function_Reference/wp_unique_post_slug

      【讨论】:

        【解决方案3】:

        实际上,如果您使用诸如wp_insert_userwp_update_user 之类的wordpress 用户功能,Wordpress 其elt 会处理重复的user_nicename 条目并为它们添加-n 后缀。 所以你的代码会是这样的:

        function new_nicename( $user_id, $nicename ) {
            $nicename = sanitize_title( $nicename );
            $user_id = wp_update_user( array( 'ID' => $user_id, 'user_nicename' => $nicename ) );
        }
        
        

        【讨论】:

          猜你喜欢
          • 2012-02-09
          • 2022-12-14
          • 2010-10-30
          • 2015-04-24
          • 2021-12-11
          • 1970-01-01
          • 2019-08-12
          • 2017-11-19
          • 2016-12-15
          相关资源
          最近更新 更多