我正在从qTranslate迁移到WPML以处理我的语言。
使用qTranslate,我有一个非常简单的方法来获取页面或帖子的url,知道它是slug:$url = get_language_url(home_url($slug));
现在使用WPML,我找不到一种方法来做到这一点。。。
这是icl_link_to_element
函数,但它直接输出a标记中的链接。。此外,你需要知道帖子ID。
知道这是slug,我能用正确的语言找到帖子的链接吗?
我正在从qTranslate迁移到WPML以处理我的语言。
使用qTranslate,我有一个非常简单的方法来获取页面或帖子的url,知道它是slug:$url = get_language_url(home_url($slug));
现在使用WPML,我找不到一种方法来做到这一点。。。
这是icl_link_to_element
函数,但它直接输出a标记中的链接。。此外,你需要知道帖子ID。
知道这是slug,我能用正确的语言找到帖子的链接吗?
实际上,Wordpress缺少一个通过slug/post name获取帖子的真正功能。但你可以使用get_page_by_path() 这样您就不必使用自定义查询:
if(function_exists(\'icl_object_id\')) {
$post = get_page_by_path(\'your-slug\');
$id = icl_object_id($post->ID,\'post\',true);
$link = get_permalink($id);
}
这里唯一的区别是您必须使用完整路径,即(\'parent-page/sub-page\'
) 如果你有一个层次结构。对于帖子和非层次化页面,您可以将slug用作param。您可以使用以下代码通过slug获取到帖子的链接。
<?php
global $wpdb;
$id = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_name = \'name-of-slug\'");
if(function_exists(\'icl_object_id\')){
get_permalink(icl_object_id($id,\'post\',true));
}
?>
我有一些旧的永久链接(帖子、页面、标签),其中现在包含非法字符,这些已经不起作用了。在之前的WP版本中,允许使用非拉丁字符,但在新版本中有所改变。有没有办法从这些永久链接中清除数据库(将它们转换为允许的格式)?