<?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");') );
?>
Comments
0 B
|👍
/👎
0 B
|👍
/👎