我正在使用名为 Spacious 的主题在wordpress网站上工作。该主题支持小部件将某些页面显示为最近的作品。小部件名称为 TG:精选小工具。这是我从主题核心文件中获得的代码。
/**
* Featured recent work widget to show pages.
*/
class spacious_recent_work_widget extends WP_Widget {
function spacious_recent_work_widget() {
$widget_ops = array( 'classname' => 'widget_recent_work', 'description' => __( 'Show your some pages as recent work. Best for Business Top or Bottom sidebar.', 'spacious' ) );
$control_ops = array( 'width' => 200, 'height' =>250 );
parent::WP_Widget( false, $name = __( 'TG: Featured Widget', 'spacious' ), $widget_ops, $control_ops);
}
function form( $instance ) {
for ( $i=0; $i<3; $i++ ) {
$var = 'page_id'.$i;
$defaults[$var] = '';
}
$att_defaults = $defaults;
$att_defaults['title'] = '';
$att_defaults['text'] = '';
$instance = wp_parse_args( (array) $instance, $att_defaults );
for ( $i=0; $i<3; $i++ ) {
$var = 'page_id'.$i;
$var = absint( $instance[ $var ] );
}
$title = esc_attr( $instance[ 'title' ] );
$text = esc_textarea($instance['text']);
?>
<p>
<label for="<?php echo $this->get_field_id('title'); ?>"><?php _e( 'Title:', 'spacious' ); ?></label>
<input id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" />
</p>
<?php _e( 'Description','spacious' ); ?>
<textarea class="widefat" rows="10" cols="20" id="<?php echo $this->get_field_id('text'); ?>" name="<?php echo $this->get_field_name('text'); ?>"><?php echo $text; ?></textarea>
<?php
for( $i=0; $i<3; $i++) {
?>
<p>
<label for="<?php echo $this->get_field_id( key($defaults) ); ?>"><?php _e( 'Page', 'spacious' ); ?>:</label>
<?php wp_dropdown_pages( array( 'show_option_none' =>' ','name' => $this->get_field_name( key($defaults) ), 'selected' => $instance[key($defaults)] ) ); ?>
</p>
<?php
next( $defaults );// forwards the key of $defaults array
}
}
function update( $new_instance, $old_instance ) {
$instance = $old_instance;
$instance[ 'title' ] = strip_tags( $new_instance[ 'title' ] );
for( $i=0; $i<3; $i++ ) {
$var = 'page_id'.$i;
$instance[ $var] = absint( $new_instance[ $var ] );
}
if ( current_user_can('unfiltered_html') )
$instance['text'] = $new_instance['text'];
else
$instance['text'] = stripslashes( wp_filter_post_kses( addslashes($new_instance['text']) ) ); // wp_filter_post_kses() expects slashed
$instance['filter'] = isset($new_instance['filter']);
return $instance;
}
function widget( $args, $instance ) {
extract( $args );
extract( $instance );
global $post;
$title = isset( $instance[ 'title' ] ) ? $instance[ 'title' ] : '';
$text = apply_filters( 'widget_text', empty( $instance['text'] ) ? '' : $instance['text'], $instance );
$page_array = array();
for( $i=0; $i<3; $i++ ) {
$var = 'page_id'.$i;
$page_id = isset( $instance[ $var ] ) ? $instance[ $var ] : '';
if( !empty( $page_id ) )
array_push( $page_array, $page_id );// Push the page id in the array
}
$get_featured_pages = new WP_Query( array(
'posts_per_page' => -1,
'post_type' => array( 'page' ),
'post__in' => $page_array,
'orderby' => 'post__in'
) );
echo $before_widget;
?>
<div class="tg-one-fourth tg-column-1">
<?php
if ( !empty( $title ) ) { echo $before_title . esc_html( $title ) . $after_title; } ?>
<p><?php echo esc_textarea( $text ); ?></p>
</div>
<?php
$i=2;
while( $get_featured_pages->have_posts() ):$get_featured_pages->the_post();
if ( $i % 4 == 0 ) { $class = 'tg-one-fourth tg-one-fourth-last'.' tg-column-'.$i; }
elseif( $i % 3 == 0 ) { $class= 'tg-one-fourth tg-after-two-blocks-clearfix'.' tg-column-'.$i; }
else { $class = 'tg-one-fourth'.' tg-column-'.$i; }
$page_title = get_the_title();
?>
<div class="<?php echo $class; ?>">
<?php
if ( has_post_thumbnail( ) ) {
echo '<div class="service-image"><a title="'.get_the_title().'" href="'.get_permalink().'">'.get_the_post_thumbnail( $post->ID,'featured-blog-medium').'</a></div>';
}
?>
</div>
<?php
$i++;
endwhile;
// Reset Post Data
wp_reset_query();
?>
<?php echo $after_widget;
}
}
上面的代码部分有下面的spinet,要求发布帖子类型。已经给出了页面。我将其更改为&#39; post&#39;
$get_featured_pages = new WP_Query( array(
'posts_per_page' => -1,
'post_type' => array( 'page' ),
'post__in' => $page_array,
'orderby' => 'post__in'
) );
仍然无法正常工作,有人可以帮忙吗?