WordPress页面上的定制模块/窗口小部件区域?我可以自己做吗?

时间:2012-04-18 作者:somdow

我是个不善言辞的人,所以请原谅我的经验不足。

长话短说,我的任务是创建一个WP主题(有点简单),但其中一个区域,在页脚区域周围,有一些他们想要的东西,比如第二份菜单/面包屑等。。。也许甚至可以自定义html框等,我以后可以用它做其他事情,我知道WP通过插件/小部件等提供这些东西,但我的问题是

我如何创建一个自定义区域,将其“挂钩”到页面的特定区域?

例如,在joomla中,我可以用named 钩子,然后,选择我想要使用的任何模块,按名称将所述小部件分配到该区域,然后在那里设置样式。

wordpress有这样的东西吗?我知道它们是不同的平台,但是否有类似的平台或wordpress的等效平台来实现这一点。

例如,我看到大多数小部件等都进入了wp\\U侧栏。我是否可以创建自己的区域,或者是否有其他挂钩可以模拟我上面描述的内容?

任何提示/答案,阅读/研究的链接,我都非常感激。

提前感谢您。

3 个回复
最合适的回答,由SO网友:Travis Pflanz 整理而成

通过添加到主题的函数,可以向主题添加其他widgetized边栏。php。

如果尚未在主题中添加小部件支持,请包括:

if (function_exists(\'register_sidebar\'))
然后添加:

// Footer Widgets
register_sidebar(array(
  \'id\' => \'footerwidgets\',
  \'name\' => \'FooterWidgets\',
  \'description\' => \'Widgets here are shown in the footer\',
  \'before_widget\' => \'<div id="%1$s" class="widget %2$s">\',
  \'after_widget\'  => \'</div>\',
  \'before_title\' => \'<h2>\',
  \'after_title\' => \'</h2>\'
));
然后在主题中添加<?php dynamic_sidebar( \'FoooterWidgets\' ); ?>

现在只需进入外观>>窗口小部件即可向该区域添加任何您喜欢的内容。

Wordpress Codex-Widgetizing Themes

如果尚未添加小部件支持,请包括

SO网友:Johannes Pille

菜单:

SO网友:David

这并不能回答你所有的问题,但当我学习这些小部件时,我很难找到一个好的、可靠的样本来学习。这是我用来参考的一个enigma 可以这么说;)

//CONSTRUCT Class
class my_custom_widget extends WP_Widget {
function my_custom_widget() {
    $widget_ops = array(\'classname\' => \'text_plus_widget\', \'description\' => \'Title Bar, Text Area, and Link URL\' );
    //WIDGET Name
    $this->WP_Widget(\'hs_text_plus\', \'Text Plus Widget\', $widget_ops);
}
//WIDGET Args
function widget($args, $instance) {
    extract($args, EXTR_SKIP);
    echo $before_widget;
    //WIDGET Database Checks
    $title = empty($instance[\'title\']) ? \' \' : apply_filters(\'widget_hs_text_plus_title\', $instance[\'title\']);
    $text_area = empty($instance[\'text_area\']) ? \' \' : apply_filters(\'widget_hs_text_plus_text_area\', $instance[\'text_area\']);
    $link_url = empty($instance[\'link_url\']) ? \' \' : apply_filters(\'widget_hs_text_plus_link_url\', $instance[\'link_url\']);

    ?>
    <li>
        <?php if ( !empty( $title ) && (strlen($title) > 1 )) { echo $before_title . $title . $after_title; }; ?>
        <?php if ( !empty( $text_area ) && (strlen($text_area) > 1 )) { echo \'<p>\' . $text_area . \'</p>\'; }; ?>
        <?php if ( !empty( $link_url ) && (strlen($link_url) > 1 )) { echo \'<a href="\' . $link_url . \'">Click Here to Learn More</a>\'; }; ?>
        <div class="clr" style="display: block; height: 20px;"></div>
    </li>
    <?php
    echo $after_widget;
}
//WIDGET Save
function update($new_instance, $old_instance) {
    $instance = $old_instance;
    $instance[\'title\'] = strip_tags($new_instance[\'title\']);
    $instance[\'text_area\'] = strip_tags($new_instance[\'text_area\']);
    $instance[\'link_url\'] = strip_tags($new_instance[\'link_url\']);
    return $instance;
}
//WIDGET Admin Form
function form($instance) {
    //set your params, $instance and then any additional variables needed below
    $instance = wp_parse_args( (array) $instance, array( \'title\' => \'\', \'text_area\' => \'\', \'link_url\' => \'\' ) );
    $title = strip_tags($instance[\'title\']);
    $text_area = strip_tags($instance[\'text_area\']);
    $link_url = strip_tags($instance[\'link_url\']);
?>
        <p><label for="<?php echo $this->get_field_id(\'title\'); ?>">Widget Title: <input class="widefat" id="<?php echo $this->get_field_id(\'title\'); ?>" name="<?php echo $this->get_field_name(\'title\'); ?>" type="text" value="<?php echo esc_attr__($title); ?>" /></label></p>
        <p><label for="<?php echo $this->get_field_id(\'text_area\'); ?>">Widget Text: <textarea class="widefat" id="<?php echo $this->get_field_id(\'text_area\'); ?>" name="<?php echo $this->get_field_name(\'text_area\'); ?>" ><?php echo esc_attr__($text_area); ?></textarea></label></p>
        <p><label for="<?php echo $this->get_field_id(\'link_url\'); ?>">Link URL: <input class="widefat" id="<?php echo $this->get_field_id(\'link_url\'); ?>" name="<?php echo $this->get_field_name(\'link_url\'); ?>" type="text" value="<?php echo esc_attr__($link_url); ?>" /></label></p>
<?php
    }
}

 //CREATE Widget
 add_action( \'widgets_init\', create_function(\'\', \'return register_widget("my_custom_widget");\') );
这不是PHP5。3语法,但如果需要,它很容易移植到该语法。干杯

结束

相关推荐

hooks & filters and variables

我是updating the codex page example for action hooks, 在游戏中完成一些可重用的功能(最初是针对这里的一些Q@WA)。但后来我遇到了一个以前没有意识到的问题:在挂接到一个函数以修改变量的输出后,我再也无法决定是要回显输出还是只返回它。The Problem: 我可以修改传递给do_action 用回调函数钩住。使用变量修改/添加的所有内容仅在回调函数中可用,但在do_action 在原始函数内部调用。很高兴:我将其修改为一个工作示例,因此您可以将其复制/粘贴