Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /*
- Plugin Name: Menu Pages Widget
- Plugin URI: http://www.juliocavalcanti.com
- Description: Adds a widget that can display subpages from a parent page.
- Author: Julio Cavalcanti
- Version: 1.0
- Author URI: http://www.juliocavalcanti.com/
- */
- class MenuPages extends WP_Widget {
- function MenuPages() {
- parent::WP_Widget(false, $name='Menu Pages');
- }
- function widget($args, $instance) {
- extract($args, EXTR_SKIP);
- $title = empty($instance['title']) ? ' ' : apply_filters('widget_title', $instance['title']);
- $page_parent = empty($instance['page_parent']) ? ' ' : apply_filters('widget_page_parent', $instance['page_parent']);
- $number_pages = empty($instance['number_pages']) ? ' ' : apply_filters('widget_number_pages', $instance['number_pages']);
- $show_in_pages = empty($instance['show_in_pages']) ? ' ' : apply_filters('widget_show_in_pages', $instance['show_in_pages']);
- if(trim($title)){
- $title = '<h3 class="widget-title">'.$title.'</h3>';
- }else{
- $title = "";
- }
- if(trim($number_pages) != "Todos"){
- $number_pages = '&number='.$number_pages;
- }else{
- $number_pages = "";
- }
- if(trim($show_in_pages[0]) == ""){
- $show_in_pages = "";
- }
- if(is_page($show_in_pages)){
- echo $before_widget;
- if(trim($number_pages) != "Todos" && trim($page_parent) != ""){
- echo "<div class='menu-container'>";
- echo "<ul class='menu'>";
- if(trim($title)){ echo "<li class='pagenav'>".$title."<ul>";}
- $pages = get_pages('child_of=' . $page_parent . '&post_type=page&sort_column=menu_order&sort_order=asc&hierarchical=1'.$number_pages);
- foreach ($pages as $pagg) {
- $item_page="<li class='page_item page-item-".$pagg->ID;
- if (is_page($pagg->ID)) {
- $item_page.=" current_page_item";
- }
- if($pagg->post_parent !=0 ){
- $item_page.=" child-item";
- }
- $item_page.="'";
- $item_page.=">";
- $item_page.="<a title='".$pagg->post_title."' href='".get_page_link($pagg->ID)."'>".$pagg->post_title."</a>";
- $item_page .= '</li>';
- echo $item_page;
- }
- if(trim($title)){ echo "</ul></li>"; }
- echo "</ul>";
- echo "</div>";
- }else{
- $nivel_1 = get_post($post->ID);
- $nivel_2 = get_post($nivel_1->post_parent);
- $nivel_3 = get_post($nivel_2->post_parent);
- $nivel_4 = get_post($nivel_3->post_parent);
- $nivel_5 = get_post($nivel_4->post_parent);
- $nivel_6 = get_post($nivel_5->post_parent);
- $nivel_7 = get_post($nivel_6->post_parent);
- if($nivel_1->ID == $nivel_2->ID){
- $id_secao = $nivel_1->ID;
- }elseif($nivel_1->ID == $nivel_3->ID){
- $id_secao = $nivel_2->ID;
- }elseif($nivel_1->ID == $nivel_4->ID){
- $id_secao = $nivel_3->ID;
- }elseif($nivel_1->ID == $nivel_5->ID){
- $id_secao = $nivel_4->ID;
- }elseif($nivel_1->ID == $nivel_6->ID){
- $id_secao = $nivel_5->ID;
- }else{
- $id_secao = $nivel_6->ID;
- }
- $children = wp_list_pages('title_li=&child_of=' . $id_secao.'&echo=0');
- if ($children) {
- $output_menu = $children;
- }
- echo "<div class='menu-container'>";
- echo "<ul class='menu'>";
- echo $output_menu;
- echo "</ul>";
- echo "</div>";
- }
- echo $after_widget;
- }
- }
- function update($new_instance, $old_instance) {
- $instance = $old_instance;
- $instance['title'] = strip_tags($new_instance['title']);
- $instance['page_parent'] = $new_instance['page_parent'];
- $instance['number_pages'] = $new_instance['number_pages'];
- $instance['show_in_pages'] = $new_instance['show_in_pages'];
- return $instance;
- }
- function form($instance) {
- $defaults = array(
- 'title' => '',
- 'page_parent' => '',
- 'number_pages' => '',
- 'show_in_pages' => ''
- );
- $instance = wp_parse_args( (array) $instance, $defaults );
- $title = strip_tags($instance['title']);
- $page_parent = strip_tags($instance['page_parent']);
- $number_pages = strip_tags($instance['number_pages']);
- $show_in_pages = $instance['show_in_pages'];
- ?>
- <p>
- <label for="<?php echo $this->get_field_id('title'); ?>">Título do Widget:
- <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo attribute_escape($title); ?>" />
- </label>
- </p>
- <p>
- <label for="<?php echo $this->get_field_id('page_parent'); ?>">Página Pai:
- <select id="<?php echo $this->get_field_id( 'page_parent' ); ?>" name="<?php echo $this->get_field_name( 'page_parent' ); ?>" class="widefat" style="width:100%;">
- <option value="">Seleciona a página</option>
- <?php
- $pages = get_pages('post_type=page&sort_column=menu_order&sort_order=asc');
- foreach ($pages as $pagg) {
- if($pagg->post_parent !=0 ){$spacer = " ";}else{$spacer = "";}
- if ( $pagg->ID == $instance['page_parent'] ){$selected = 'selected="selected"';}else{$selected = '';}
- $option = '<option value="'.$pagg->ID.'" '.$selected.'>';
- $option .= $spacer . $pagg->post_title;
- $option .= '</option>';
- echo $option;
- }
- ?>
- </select>
- </label>
- <span style="font-size:10px;">Aparecerá na lista as páginas filhas da que for selecionada.</span> </p>
- <p>
- <label for="<?php echo $this->get_field_id('number_pages'); ?>">Mostrar quantos itens na lista?
- <select id="<?php echo $this->get_field_id( 'number_pages' ); ?>" name="<?php echo $this->get_field_name( 'number_pages' ); ?>" class="widefat" style="width:100%;">
- <option <?php if ( 'Todos' == $instance['number_pages'] ) echo 'selected="selected"'; ?>>Todos</option>
- <option <?php if ( '1' == $instance['number_pages'] ) echo 'selected="selected"'; ?>>1</option>
- <option <?php if ( '2' == $instance['number_pages'] ) echo 'selected="selected"'; ?>>2</option>
- <option <?php if ( '3' == $instance['number_pages'] ) echo 'selected="selected"'; ?>>3</option>
- <option <?php if ( '4' == $instance['number_pages'] ) echo 'selected="selected"'; ?>>4</option>
- <option <?php if ( '5' == $instance['number_pages'] ) echo 'selected="selected"'; ?>>5</option>
- </select>
- </label>
- </p>
- <label for="<?php echo $this->get_field_id('show_in_pages'); ?>">
- Em quais páginas o widget irá aparecer:
- <ul id="<?php echo $this->get_field_id('show_in_pages'); ?>" style="overflow-x: hidden; height: 200px; width: 100%;">
- <?php
- $i = 0;
- $pages = get_pages('post_type=page&sort_column=menu_order&sort_order=asc&hierarchical=1');
- foreach ($pages as $pagg) {
- if($pagg->post_parent !=0 ){$spacer = " ";}else{$spacer = "";}
- $option="<li>".$spacer.'<input type="checkbox" id="'. $this->get_field_id( 'show_in_pages' ) .'[]" name="'. $this->get_field_name( 'show_in_pages' ) .'[]"';
- if (is_array($instance['show_in_pages'])) {
- foreach ($instance['show_in_pages'] as $pags) {
- if($pags==$pagg->ID) {
- $option=$option.' checked="checked"';
- }
- }
- }
- $option .= ' value="'. $pagg->ID .'" /> ';
- $option .= $pagg->post_title;
- $option .= '</li>';
- echo $option;
- $i++;
- }
- ?>
- </ul>
- </label>
- <script type="text/javascript">
- $(document).ready(function(){
- $("ul#show_in_pages li ul").addClass("children");
- $("ul#show_in_pages li ul.children").attr("style","padding-left: 20px;");
- });
- </script>
- <span style="font-size:10px;">O widget aparecerá nas páginas que forem selecionadas na lista.</span>
- <?php
- }
- }
- add_action( 'widgets_init', create_function('', 'return register_widget("MenuPages");') );
- ?>
Advertisement