如何修改我的自定义小部件以支持 qtranslate? [英] How can I modify my custom widgets to support qtranslate?

查看:24
本文介绍了如何修改我的自定义小部件以支持 qtranslate?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个网站,我必须修改我的小部件才能使用 qTranslate 插件.有人可以指出我正确的方向吗?

I have a website where I have to modify my widgets to work with the qTranslate plugin. Can someone please point me at the right direction ?

基本上,我希望为每种语言显示我的输入字段,以便用户轻松地知道在哪里输入信息,而不是像在隐秘刺痛中输入信息

Basically I would like to have my input fields show for every language, so that the user easily knows where to enter the information instead of enteric in the cryptic sting like

[:en]仅英语[:fr]仅法语

感谢您的帮助

推荐答案

AFAIK,您必须使用自定义翻译字段复制所需的小部件.

AFAIK, you'd have to replicate the Widgets that you want with custom translation fields.

以下是对 Search Widget 的改编,复制自 /wp-includes/default-widgets.php.

请注意,您可以优化所有 FIELD_language 选项值,在所有可用语言中执行 foreach.

Note that you can optimize all FIELD_language option values, doing a foreach in all available languages.

add_action( 'widgets_init', 'qtrans_search_widget_so_14303711' );

function qtrans_search_widget_so_14303711()
{
    unregister_widget( 'WP_Widget_Search' );
    register_widget( 'QT_Widget_Search' );
}

class QT_Widget_Search extends WP_Widget {

    function __construct() {
        $widget_ops = array('classname' => 'widget_search', 'description' => __( "A search form for your site") );
        parent::__construct('search', __('Search'), $widget_ops);
    }

    function widget( $args, $instance ) {
        extract($args);
        $title_en = empty( $instance['title_en'] ) ? '' : $instance['title_en'] ;
        $title_fr = empty( $instance['title_fr'] ) ? '' : $instance['title_fr'] ;

        // THIS PART CAN BE GREATLY OPTIMIZED
        $lingo = qtrans_getLanguage();
        if ( 'en' == $lingo )
            $title = $title_en;
        else
            $title = $title_fr;

        echo $before_widget;
        if ( $title )
            echo $before_title . $title . $after_title;

        // Use current theme search form if it exists
        get_search_form();

        echo $after_widget;
    }

    function form( $instance ) {
        $instance = wp_parse_args( (array) $instance, array( 'title_en' => '', 'title_fr' => '') );
        $title_en = $instance['title_en'];
        $title_fr = $instance['title_fr'];
?>
        <p><label for="<?php echo $this->get_field_id('title_en'); ?>"><?php _e('Title English:'); ?> <input class="widefat" id="<?php echo $this->get_field_id('title_en'); ?>" name="<?php echo $this->get_field_name('title_en'); ?>" type="text" value="<?php echo esc_attr($title_en); ?>" /></label></p>
    <p><label for="<?php echo $this->get_field_id('title_fr'); ?>"><?php _e('Title Français:'); ?> <input class="widefat" id="<?php echo $this->get_field_id('title_fr'); ?>" name="<?php echo $this->get_field_name('title_fr'); ?>" type="text" value="<?php echo esc_attr($title_fr); ?>" /></label></p>
<?php
    }

    function update( $new_instance, $old_instance ) {
        $instance = $old_instance;
        $new_instance = wp_parse_args((array) $new_instance, array( 'title_en' => '', 'title_fr' => ''));
        $instance['title_en'] = strip_tags($new_instance['title_en']);
        $instance['title_fr'] = strip_tags($new_instance['title_fr']);
        return $instance;
    }

}

它呈现:

这篇关于如何修改我的自定义小部件以支持 qtranslate?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆