WordPress菜单的干净国际化?

时间:2011-05-31 作者:Marcio Almada

我正在开发一个Wordpress插件,旨在解决内容国际化问题。该插件允许用户以不同的语言发布内容。它还提供了很好的语言导航,因此访问者可以在可用语言之间切换。

我已经取得了很好的效果:该插件使用WYSIWYG编辑器(根据管理员启用的语言)添加了自定义字段,因此编辑和发布帖子和页面的翻译变得不那么枯燥。唯一的问题是:

我还没有遇到一个干净的实现来提供菜单国际化。有人知道如何将自定义字段添加到菜单管理屏幕以翻译菜单项吗?或者是另一种处理多语言导航交易的方式?

附言:我不打算给Wordpress核心添加任何调整;]

1 个回复
SO网友:kaiser

什么是导航菜单项

翻译帖子时,页面(&;自定义帖子类型,那么我猜你也会翻译标题。一般来说,导航菜单项只是帖子、页面等,因此(应该)包含全部内容&;帖子提供的数据(如果没有,那么您仍然可以调用帖子元)。

过滤器回调函数:nav菜单项的输出有一个过滤器
  • 相反:它可能会导致问题,例如管理UI屏幕上没有出现导航菜单,因此请注意正确测试
  • The "check nav menu items" callback function:

        function wpse18880_check_nav_menu_items( $items, $menu, $args )
        {
            if ( is_admin() )
                return;
    
            echo \'<pre>\';
                # Show what we got:
                echo \'<h3>THE MENU</h3>\';
                print_r( $menu );
                echo \'<hr /><h3>THE ITEMS</h3>\';
                print_r( $items );
                echo \'<hr /><h3>THE ARGUMENTS</h3>\';
                print_r( $args );
            echo \'</pre>\';
    
            return $items;
        }
        add_filter( \'wp_get_nav_menu_items\', \'wpse18880_check_nav_menu_items\', 10, 3 );
    
    修改菜单项:

    查看$item, 您将看到每个项目都附带了它的post数据(“或不管是什么”-数据)。因此,调用附加post数据(通过get_post_meta()) 如以下示例所示,您可以访问特定语言的内容:

    // This example is for \'post\' post_type menu items:
    foreach ( $items as $item )
    {
        $post_ID = $item->ID;
        // now let\'s overwrite the original post_title
        $item->post_title = get_post_meta( $post_ID, \'i18n_title\', true );
    }
    
    注意:我只测试了检查导航菜单项功能,没有覆盖单项数据。如果您的答案有效,请使用最终代码更新此答案。非常感谢。

    结束

    相关推荐