¿Cómo obtener el ID de publicación (del tipo personalizado personalizado principal) en un bucle dentro de un widget?

wordpress.stackexchange https://wordpress.stackexchange.com/questions/27035

  •  30-10-2019
  •  | 
  •  

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
scroll top