【问题标题】:How can I modify my custom widgets to support qtranslate?如何修改我的自定义小部件以支持 qtranslate?
【发布时间】:2013-01-13 12:58:55
【问题描述】:

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

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

[:en]English only[:fr]Francais only

感谢您的帮助

【问题讨论】:

    标签: wordpress qtranslate


    【解决方案1】:

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

    以下是对搜索小部件的改编,抄自/wp-includes/default-widgets.php

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

    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;
        }
    
    }
    

    它呈现:

    【讨论】:

    • 这么好的回复被忽视了!
    猜你喜欢
    • 2014-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    • 2013-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多