Come ottenere l'ID post (del tipo personalizzato per il genitore) in un ciclo all'interno di un widget?
Domanda
Di seguito c'è un widget con un ciclo WordPress all'interno. Funziona come previsto. L'unico problema è questa parte:
'post_parent' => $post->ID,
Il widget non sta ottenendo il post->ID
del genitore della corrente topic
Tipo di post personalizzato (con un altro tipo di post personalizzato chiamato forum
).
Funziona quando metto il ciclo in un file modello. Questo:
<?php $current_post_id = $post->ID; ?>
<h2><?php echo $current_post_id; ?></h2>
Output un ID post (il tipo di post personalizzato del forum che è il genitore del tipo di post personalizzato dell'argomento).
/**
* Most voted topics widget
*/
class MostVotedTopics extends WP_Widget {
/** constructor */
function MostVotedTopics() {
parent::WP_Widget(false, $name = 'Most Voted Topics');
}
/** @see WP_Widget::widget */
function widget($args, $instance) {
extract( $args );
$title = apply_filters('widget_title', $instance['title']);
?>
<?php echo $before_widget; ?>
<?php if ( $title )
echo $before_title . $title . $after_title; ?>
<?php // Display the top topics of current forum
$args = array(
'post_type' => 'topic',
'posts_per_page' => '3',
'post_parent' => $post->ID,
'gdsr_sort' => 'thumbs',
'gdsr_ftvmin' => '1',
'gdsr_order' => 'desc',
'order' => 'DESC'
);
?>
<?php query_posts( $args ); ?>
<?php while ( have_posts() ) : the_post(); ?>
<div class="topic-wrapper">
<div class="topic-left">
<?php $current_post_id = $post->ID; ?>
<h2><?php echo $current_post_id; ?></h2>
<h2><a href="<?php bbp_topic_permalink(); ?>" title="<?php bbp_topic_title(); ?>"><?php bbp_topic_title(); ?></a></h2>
<span><?php printf( __( 'Started by: %1$s', 'bbpress' ), bbp_get_topic_author_link( array( 'size' => '14' ) ) ); ?></span>
<?php echo get_avatar(get_the_author_meta('user_email'), 64); ?>
<?php the_author_meta('nicename'); ?>
<p>Last modified on the: <?php the_modified_date(); ?>. by: <?php the_modified_author();?></p>
<p>Time last modified: <?php the_modified_time(); ?></p>
<?php echo time_ago(); ?>
<div class="topic-like-count">
<h4><?php wp_gdsr_render_article_thumbs(); ?></h4>
<?php preg_match( '!<div class="thumblock ">(.*)</div>!si' , wp_gdsr_render_article_thumbs(0, false, "", 0, "", false) , $n );
$thumbs_number = strip_tags( $n[1] ); ?>
<?php if ( $thumbs_number == 1 || $thumbs_number == -1 ) : ?>
<span><?php _e( 'vote' ); ?></span>
<?php else : ?>
<span><?php _e( 'votes' ); ?></span>
<?php endif; ?>
</div>
<div class="topic-reply-count">
<h4><?php bbp_topic_reply_count(); ?></h4>
<?php if ( bbp_get_topic_reply_count() == 1 ) : ?>
<span><?php _e( 'reply' ); ?></span>
<?php else : ?>
<span><?php _e( 'replies' ); ?></span>
<?php endif; ?>
</div>
<div class="topic-freshness">
<h4><?php bbp_topic_freshness_link(); ?></h4>
<span>
<?php bbp_author_link( array( 'post_id' => bbp_get_topic_last_active_id(), 'size' => 14 ) ); ?>
</span>
</div>
<?php $most_voted[] = get_the_ID(); // get the id of the most voted post ?>
</div>
<?php endwhile; ?>
<?php wp_reset_query(); ?>
<?php print_r($most_voted); ?>
<?php echo $after_widget; ?>
<?php
}
/** @see WP_Widget::update */
function update($new_instance, $old_instance) {
$instance = $old_instance;
$instance['title'] = strip_tags($new_instance['title']);
return $instance;
}
/** @see WP_Widget::form */
function form($instance) {
$title = esc_attr($instance['title']);
?>
<p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('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 $title; ?>" /></label></p>
<?php
}
} // class FooWidget
// register FooWidget widget
add_action('widgets_init', create_function('', 'return register_widget("MostVotedTopics");'));
Qualche suggerimento per risolvere questo problema?
Nessuna soluzione corretta
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a wordpress.stackexchange