Wordpress пользовательские области модулей/виджета на странице? я могу сделать свое собственное?

Я - своего рода новичок Wordpress, поэтому извините мою неопытность.

такая длинная короткая история, для меня определили задачу с созданием темы WP (своего рода простое), но, одна из областей, вокруг области нижнего колонтитула, имеет несколько вещей, которые они хотят, как 2ndary меню / панировочные сухари и т.д...., возможно, даже пользовательское поле HTML и т.д., что я могу сделать другие вещи с позже, которые я знаю, WP обеспечивает через плагины / виджеты и т.д., но, мой вопрос

как я могу сделать пользовательскую область для "сцепления" их на определенную область страницы?

например, в joomla, я могу отметить любую часть страницы с именованными рычагами и после этого, выбрать любой модуль, с которым я хочу работать, присвоить, сказал, что виджет к области по имени и вот именно, разработайте его там после.

Wordpress имеет что-нибудь как это? я знаю theyre различные платформы, но есть ли что-либо как он или Wordpress, эквивалентный для достижения этого.

я вижу, например, что большинство виджетов и т.д., войдите в wp_sidebar. я могу сделать свою собственную область или являюсь там другими рычагами, которые моделируют то, что я описал выше?

Любые подсказки/ответы, ссылки, чтобы читать/исследовать i с удовольствием и кротко ценить.

Спасибо в усовершенствованном.

1
18.04.2012, 16:33
3 ответа

Можно добавить дополнительные виджетизированные боковые панели к теме путем добавления к functions.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 - виджетизация тем

Если Вы уже не добавили поддержку виджета, включать

4
19.02.2020, 22:42
  • 1
    +1 использования Для запоминания %2$s в before_widget. Я добавил идентификатор также. Разработчики темы: Всегда позволяйте Комплекту программ системного обеспечения атрибуты класса и идентификатор! –  Stephen Harris 18.04.2012, 17:08
  • 2
    Привет, спасибо за Ваш информативный ответ. я сделал, как Вы сказали, и все работали, как это должно, это появилось в области виджетов, НО, я ничего не вижу. любые виджеты, которые я добавляю к модулю, если Вы будете, не показывают на странице. когда я делаю быстрый тест на Firebug для поиска его, это не появляется в коде ни один так не проникать вообще. Какие-либо идеи? еще раз спасибо –  somdow 19.04.2012, 03:15
  • 3
    , я просто протестировал код и это, кажется, работает, как он, как предполагается. Дайте мне URL, и я буду смотреть на него. укомплектуйте –  Travis Pflanz 19.04.2012, 03:37
  • 4
    ahh не онлайн, я выполняю его на WAMP/MAMP сюда в доме. Что Вы думаете, что это могло быть? когда я Firebug страница (я добавил текстовый виджет и добавил фиктивные слова), и я ищу его на коде, они не подходят, который сообщает мне theyre, не проникающий. какие-либо идеи? Спасибо –  somdow 19.04.2012, 03:40
  • 5
    Эй исходный плакат, короче говоря, я отредактировал свой код (на основе Вашего) и добавил это к вершине его, "если (function_exists ('register_sidebar'))" и это работало. Отредактируйте свой ответ, таким образом, я могу отметить его. Спасибо –  somdow 19.04.2012, 03:58

Меню:

Области виджета: кодекс - Виджетизация Тем

Навигационные цепочки: посмотрите этот pastebin

2
19.02.2020, 22:42
  • 1
    +1 для pastebin. Я официально сильно ударяю для более позднего :) –  David 18.04.2012, 17:02

Это не отвечает на все Ваши вопросы, но когда я изучал виджеты, мне было трудно найти, что хороший надежный образец извлекает уроки из. Таким образом, вот тот, который я раньше в качестве ссылки переносил мою голову 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, однако это легко портативно к этому при требовании его.Удачи!

1
19.02.2020, 22:42

Теги

Похожие вопросы