我想为WordPress中的每个新帖子设置一个自定义固定链接,例如:http://mysite.com/x5Kvy6(如bit.ly)。
我尝试了这个小脚本,但它只为固定链接中的帖子标题添加了5位数字。
function wp_unique_post_slug( $slug, $post_ID, $post_status, $post_type, $post_parent ) {
if($slug!=""){
$random=rand(11111,99999); //I needed 5 digit random
$slug .= "-" . $random;
}
return $slug;
}
如何制作随机密钥而不是帖子标题?
我还没有研究过URL缩短程序或重定向方法。
欢迎任何想法!
答案 0 :(得分:3)
function wp_unique_post_slug($col,$table='wp_posts'){
global $wpdb;
$alphabet = array_merge( range(0, 9), range('a','z') );
$already_exists = true;
do {
$guidchr = array();
for ($i=0; $i<32; $i++)
$guidchr[] = $alphabet[array_rand( $alphabet )];
$guid = sprintf( "%s", implode("", array_slice($guidchr, 0, 12, true)) );
// check that GUID is unique
$already_exists = (boolean) $wpdb->get_var("
SELECT COUNT($col) as the_amount FROM $table WHERE $col = '$guid'
");
} while (true == $already_exists);
return $guid;
}
这可以通过多种方式进行优化。
同样关于这个wp_unique_post_slug()
- yikes注意名称间距。 Wordpress已使用此功能名称
答案 1 :(得分:1)
if($slug!=""){
$random=rand(11111,99999); //I needed 5 digit random
$slug = $random;
}
。=用于连续字符串。
答案 2 :(得分:1)
使用Mwayi answer的正确方法是使用过滤器wp_unique_post_slug
,因为function wp_unique_post_slug()
会使用WP自己的功能。在WP函数内部,我们找到了这个过滤器钩子。
add_filter( 'wp_unique_post_slug', 'unique_slug_so_11762070', 10, 6 );
function unique_slug_so_11762070( $slug, $post_ID, $post_status, $post_type, $post_parent, $original_slug ) {
$new_slug = so_11762070_unique_post_slug('guid');
return $new_slug;
}
# From: https://stackoverflow.com/a/11762698
function so_11762070_unique_post_slug($col,$table='wp_posts'){
global $wpdb;
$alphabet = array_merge( range(0, 9), range('a','z') );
$already_exists = true;
do {
$guidchr = array();
for ($i=0; $i<32; $i++)
$guidchr[] = $alphabet[array_rand( $alphabet )];
$guid = sprintf( "%s", implode("", array_slice($guidchr, 0, 12, true)) );
// check that GUID is unique
$already_exists = (boolean) $wpdb->get_var("
SELECT COUNT($col) as the_amount FROM $table WHERE $col = '$guid'
");
} while (true == $already_exists);
return $guid;
}
答案 3 :(得分:0)
对于SEO,你最好尽量保持slug,即。不要将永久链接更改为随机序列。 使用This plugin,您仍然可以使用http://example.com/raNd0m永久链接在社交网络或您网站的图片中进行分享。
这样您就赢得了 SEO 和短链接
我使用http://ijassar.info/underrated撰写关于此特定主题的帖子