Comment obtenir l'ID de poste (du type personnalisé personnalisé parent) dans une boucle à l'intérieur d'un widget?

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

  •  30-10-2019
  •  | 
  •  

Question

Ci-dessous, il y a un widget avec une boucle WordPress à l'intérieur. Cela fonctionne comme prévu. Le seul problème est cette partie:

'post_parent' => $post->ID,

Le widget n'obtient pas le post->ID du parent du courant topic Type de publication personnalisé (avec est un autre type de message personnalisé appelé forum).

Cela fonctionne lorsque je place la boucle dans un fichier de modèle. Cette:

<?php $current_post_id = $post->ID; ?>

<h2><?php echo $current_post_id; ?></h2>

Sort un ID de poste (le type de publication personnalisé du forum qui est le parent du type de message personnalisé du sujet).

/**
 * 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");'));

Une suggestion pour résoudre ce problème?

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top