¿Cómo obtener el ID de publicación (del tipo personalizado personalizado principal) en un bucle dentro de un widget?
Pregunta
A continuación hay un widget con un bucle de WordPress en el interior. Funciona como se esperaba. El único problema es esta parte:
'post_parent' => $post->ID,
El widget no está obteniendo el post->ID
del padre de la corriente topic
Tipo de publicación personalizado (con es otro tipo de publicación personalizado llamado forum
).
Funciona cuando coloco el bucle en un archivo de plantilla. Este:
<?php $current_post_id = $post->ID; ?>
<h2><?php echo $current_post_id; ?></h2>
Emite una ID de publicación (el tipo de publicación personalizado del foro que es el tipo de publicación personalizado del tema).
/**
* 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");'));
¿Alguna sugerencia para solucionar esto?
No hay solución correcta
Licenciado bajo: CC-BY-SA con atribución
No afiliado a wordpress.stackexchange