Lang Forge uses WordPress post meta to store language data on individual posts.
_lf_language
The primary language identifier for every post/page.
php
// Read the language of a post
$lang = get_post_meta($post_id, '_lf_language', true);
// Returns: 'en'
// Use the API function (recommended - updates both postmeta AND lf_translations table)
LF_Post_Translation::instance()->set_post_language($post_id, 'en');
// Direct write (updates ONLY postmeta - does NOT update lf_translations)
// Only use this if you know what you are doing
update_post_meta($post_id, '_lf_language', 'en');> Note: Always use LF_Post_Translation::instance()->set_post_language() when setting languages programmatically. It updates both the postmeta and the wp_lf_translations table.
_lf_menu_item_language
Used on nav menu items to assign a language scope.
php
$menu_lang = get_post_meta($menu_item_id, '_lf_menu_item_language', true);
// Returns: 'en' or empty string for all-language itemsphp
class Theme_Language_Menu_Walker extends Walker_Nav_Menu {
public function start_el(&$output, $item, $depth = 0, $args = null, $id = 0) {
$item_lang = get_post_meta($item->ID, '_lf_menu_item_language', true);
$current_lang = lf_get_current_language();
if ($item_lang && $item_lang !== $current_lang) {
return;
}
parent::start_el($output, $item, $depth, $args, $id);
}
}—