【问题标题】:Custom Wordpress Widget - 3 Text Fields自定义 Wordpress 小部件 - 3 个文本字段
【发布时间】:2012-12-12 00:46:49
【问题描述】:

我找到了一个教程 http://www.makeuseof.com/tag/how-to-create-wordpress-widgets/,它展示了如何创建一个带有标题字段的基本 WP 小部件。

谁能帮我在小部件中再添加两个字段,以便我可以收集:

  • 标题
  • 内容
  • 链接

我想我知道如何使用它并设置它的样式。

非常感谢您的帮助!

冒险

【问题讨论】:

    标签: widget wordpress custom-widgets


    【解决方案1】:

    要添加到文件中的代码

    如果您想为内容添加文本区域,可以将以下行放入function form($instance)

    printf(
        '<textarea class="widefat" rows="16" cols="20" id="%1$s" name="%2$s">%3$s</textarea>',
        $this->get_field_id( 'content' ),
        $this->get_field_name( 'content' ),
        $content
    );
    

    其中$content 是您之前插入的内容。

    对于文本字段,您可以将以下几行放入相同的函数中:

    printf( '<p>
            <label for="%1$s">%2$s</label>
            <input class="widefat" id="%1$s" name="%3$s" type="text" value="%4$s" />
        </p>',
        $this->get_field_id( 'link' ),
        __( 'Title:', $this->language ),
        $this->get_field_name( 'link' ),
        esc_attr( $link )
    );
    

    其中$link 是您之前插入的内容。

    将以下行添加到function update($new_instance, $old_instance)

    $instance['content'] = $new_instance['content'];
    $instance['link']    = $new_instance['link'];
    

    将以下行添加到function widget($args, $instance)

    $content = empty( $instance['content'] ) ? '' : wpautop( $instance['content'] );
    $link    = empty( $instance['link'] ) ? '' : esc_attr( $instance['link'] );
    
    if ( ! empty( $content ) )
        echo $content;
    
    if ( ! empty ( $link ) )
        echo "<a href='$link'>$link</a>";
    

    如果您不想自动将&lt;p&gt; 添加到您的内容中,只需删除wpautop

    函数的作用

    function form($instance) 显示后端小部件表单
    function update($new_instance, $old_instance) 在保存小部件表单值时对其进行清理。
    function widget($args, $instance) 显示小部件的前端显示

    所以如果你想改变小部件设置窗口的显示,编辑function form($instance)的内容。

    希望对你有帮助!

    【讨论】:

    • 谢谢迈克!我将如何添加其他字段(只是 )。另外,代码的哪一部分定义了它们在 Widget 设置窗口中显示的列表?
    【解决方案2】:

    非常感谢您的帮助,有一个小问题: 当您保存内容时,所有内容都会从表单中消失。 所以我像这样修复了解析开头的新字段:$instance 数组

    function form($instance)
        {
        $instance = wp_parse_args( (array) $instance, array( 
            'title' => '',
            'bannertext' => '',
            'link' => '' 
        ) );
        $title = $instance['title'];
        $bannertext = $instance['bannertext'];
        $link  = $instance['link'];
    

    然后制作 printf() 的内容

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-20
      • 2012-01-18
      • 2014-06-24
      相关资源
      最近更新 更多