• 05-02-2017, 18:05:30
    #1
    Aşağıya kodun tamamını ekledim ama sabahtan beri bununla uğraşıyorum,
    aşağıdaki kod wordpress eklentisinde 27 IDli kategorideki son postlarından 1 er tane çekiyor. okey buraya kadar herşey normal ama sitede 7 userin 27 idsine sahip kategoride yazısı var ve dolayısıyla 7sinide gösteriyor. en son 4 ünü göstersin şeklinde bidüzenleyemedim amatörüm yardımcı olabilecek varmı



    <?php
    
    /**
    
    * Plugin Name: KÖŞE YAZARLARI
    
    */
    
    
    
    add_action( 'widgets_init', 'xturk_yazarlar_load_widgets' );
    
    
    
    function xturk_yazarlar_load_widgets() {
    
    	register_widget( 'xturk_yazarlar_widget' );
    
    }
    
    
    
    class xturk_yazarlar_widget extends WP_Widget {
    
    
    
    	function xturk_yazarlar_widget() {
    
    	$widget_ops = array( 'classname' => 'xturk_yazarlar_widget', 'description' => __('Sidebar\'da Yazarları gösterir.', 'xturk_yazarlar_widget') );
    
    	$control_ops = array( 'width' => 250, 'height' => 350, 'id_base' => 'xturk_yazarlar_widget' );
    
    	$this->WP_Widget( 'xturk_yazarlar_widget', __('(X) Sidebar: Yazarlar', 'xturk_yazarlar_widget'), $widget_ops, $control_ops );
    
    	}
    
    	function widget( $args, $instance ) {extract( $args );
    
    	
    
    		$title = apply_filters('widget_title', $instance['title'] );
    
    		$number = $instance['number'];
    
    		
    
    		
    
    		echo $before_widget;
    
    		
    
    		if ( $title )
    
    		echo $before_title . $title . $after_title;
    
    
    
    
    
    		?>
    
    
    
    
    
    
    
    <div class="babil-sidebar-yazarlar">
    
     
      <ul>
    
    
    
     
    
    <?php global $wpdb; $authors = $wpdb->get_results("SELECT ID, user_nicename from $wpdb->users WHERE ID NOT IN(1) ORDER BY (SELECT post_date FROM $wpdb->posts WHERE post_author=$wpdb->users.ID ORDER BY post_date DESC LIMIT 1) DESC");
    
    $args = array(
    
        'posts_per_page' => 1,
    
        'author'         => $author->ID
    
    );
    
    $posts = new WP_Query( $args );
    
    $count = count( $posts );
    
    foreach($authors as $author) { ?>
    
    <?php query_posts(array('cat' => '27', 'showposts' => 1, 'author' => $author->ID )); if(have_posts()) : ?>
    
    <?php while ( have_posts() ) : the_post(); ?>
    
    
    
    
    
    
    
    
    
    
    
                       
    
        <a href="<?php the_permalink() ?>" target="_blank">
            <li>
                <div class="babil-sidebar-yazarlar-gorsel"><?php userphoto_the_author_photo(
                    '',
                    '',
    				array('width' => '110','height' => '110'),
                    get_bloginfo('template_url').'/images/avatar.png'
        ) ?></div>
                <div class="babil-sidebar-yazarlar-isim"><h4><?php echo get_the_author_meta('display_name', $author->ID); ?></h4></div>
                <div class="babil-sidebar-yazarlar-spot"><p><?php the_title(); ?></p></div>       
            </li>
        </a> 
                    
    
    			
    
    			<?php endwhile; ?>
    
    			<?php endif; ?>
    
    			<?php } ?>
    
                
    
                
    
        </ul>
    
    </div>
    
    
    
    <?php echo $after_widget; }
    
    
    
    
    
    		function update( $new_instance, $old_instance ) {
    
    		$instance = $old_instance;
    
    
    
    		
    
    		$instance['title'] = strip_tags( $new_instance['title'] );
    
    		$instance['number'] = strip_tags( $new_instance['number'] );
    
    
    
    
    
    		return $instance;
    
    	}
    
    
    
    
    
    	function form( $instance ) {
    
    
    
    		
    
    		$defaults = array( 'number' => 3);
    
    		$instance = wp_parse_args( (array) $instance, $defaults ); ?>
    
    
    
    		
    
    		<p>
    
    			<label for="<?php echo $this->get_field_id( 'title' ); ?>">Başlık:</label>
    
    			<input id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" style="width:90%;" />
    
    		</p>
    
    
    
    		
    
    		<p>
    
    			<label for="<?php echo $this->get_field_id( 'number' ); ?>">Kaç haber gösterilsin:</label>
    
    			<input id="<?php echo $this->get_field_id( 'number' ); ?>" name="<?php echo $this->get_field_name( 'number' ); ?>" value="<?php echo $instance['number']; ?>" style="width:90%;"/>
    
    		</p>
    
            
    
            
    
    
    
    
    
    	<?php
    
    	}
    
    }
    
    ?>
  • 05-02-2017, 18:16:04
    #2
    Gold üye
    ORDER BY ve LIMIT (mysql) eklemeniz gerekiyor sanırsam.
  • 05-02-2017, 18:33:15
    #3
    sorunuzu ve kodu doğru anladıysam şöyle olması gerekiyor.

    92. satırdaki mevcut kod

    foreach($authors as $author) { ?>
    değişiklik sonrası kod

    foreach($authors as $author) {
          isset($i) ? $i++ : $i=0;
          if($i==4){ break; }
     ?>
  • 05-02-2017, 20:55:55
    #4
    acidmax adlı üyeden alıntı: mesajı görüntüle
    sorunuzu ve kodu doğru anladıysam şöyle olması gerekiyor.

    92. satırdaki mevcut kod

    foreach($authors as $author) { ?>
    değişiklik sonrası kod

    foreach($authors as $author) {
          isset($i) ? $i++ : $i=0;
          if($i==4){ break; }
     ?>
    valla helal hocam... doğru anlamışsınız çok teşekkür ederim. çok sağolun