WPML获取URL而不输出

时间:2013-09-04 作者:fkoessler

我正在从qTranslate迁移到WPML以处理我的语言。

使用qTranslate,我有一个非常简单的方法来获取页面或帖子的url,知道它是slug:$url = get_language_url(home_url($slug));

现在使用WPML,我找不到一种方法来做到这一点。。。

这是icl_link_to_element 函数,但它直接输出a标记中的链接。。此外,你需要知道帖子ID。

知道这是slug,我能用正确的语言找到帖子的链接吗?

2 个回复
最合适的回答,由SO网友:s1lv3r 整理而成

实际上,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。

SO网友:Vinod Dalvi

您可以使用以下代码通过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)); 
    }
?>

结束

相关推荐

Illegal characters in URLs

我有一些旧的永久链接(帖子、页面、标签),其中现在包含非法字符,这些已经不起作用了。在之前的WP版本中,允许使用非拉丁字符,但在新版本中有所改变。有没有办法从这些永久链接中清除数据库(将它们转换为允许的格式)?