使用 WPML 从 PHP 调用 Wordpress 中的特定页面

Call a specific page in Wordpress from PHP with WPML

我有一个适用于 Blocks 的 Wordpress 模板。您在块中映射一个页面,然后将此块添加到您的主页。但是,一个Block没有映射选项,所以我做了以下。

我从这个特定的块打开了 PHP 文件并添加了代码来调用具有 ID 的页面。

<?php
$my_id = 1575;
$post_id_1575 = get_post($my_id);
$content = $post_id_1575->post_content;
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]>', $content);
echo $content;
?>

该页面有一个 ID=1575。但是,当我使用 WPML 复制页面并以另一种语言创建它时,它会创建一个具有新 ID 的新页面。有什么方法可以检查所选 PHP 上的语言,然后调用另一个页面 ID?

例如:

<?php

if (language == "en") {
    $my_id = 1575;
} else {
    $my_id = 1580;
}
$post_id_1575 = get_post($my_id);
    $content = $post_id_1575->post_content;
    $content = apply_filters('the_content', $content);
    $content = str_replace(']]>', ']]>', $content);
    echo $content;
?>

要在 WPML 中获取当前选择的语言,请使用以下代码:

global $sitepress;
$language = $sitepress->get_current_language();

这将 return 两个字母的语言代码,例如 'fr' 代表法语或 'it' 代表意大利语。

但是,我认为您想要做的是用另一种语言找出特定 post 的 link。如果您只是需要根据具体情况执行此操作,Barry Kooij wrote a function 可以完成此操作。

如果您想要让用户可以选择切换他们查看 post 的语言,您应该考虑使用 WPML 的语言切换器或 creating a custom WPML language switcher