user1714777
user1714777

Reputation: 1

if category empty return a message

i have this code to get some elements from wordpress

global $post;

$i=0;

$args = array( 'numberposts' => 5, 'category' =>5,'order'=>'DESC','orderby'=>'post_date','suppress_filters' => 0 );

$myposts = get_posts( $args );
$has_posts = true;

foreach( $myposts as $post ) :  setup_postdata($post); ?>


<?php $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'single-post-thumbnail' ); ?>

<li>

<?php if($image){ ?>


<div class="news_left"><a href="<?php the_permalink(); ?>"><img src="<?php echo $image[0]; ?>" alt="" width="191" height="132" /></a></div>

<?php } ?>

<?php
    $content = apply_filters('the_content', get_the_content());
    $content = explode("</p>", $content);
?>

<div class="news_right">

    <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>

    <span class="date">Date: <?php the_time('j/m/Y') ?></span>

    <?php echo $content[1] . "</p>";//echo String::content_limit(200,'<p>'); ?>

    <a href="<?php the_permalink(); ?>">Read More</a>

</div> 

<div class="clear"></div>   

</li>

<?php $i++; endforeach; ?>

i need to put a condition to return text message if category is empty.like no posts to display , please note that the post use WPML as the language switcher

Upvotes: 0

Views: 4433

Answers (2)

lberelson
lberelson

Reputation: 11

Thank you so much!! This solved my problem.. ref: howlingwolfmedia.com/site3/classes/class-categories

see 'Personalized Training'

my code here: `

<?php 
    $args=array(
      'child_of' => 4,
      'orderby' => 'name',
      'order' => 'ASC',
      'hide_empty' => '0'
      );
    $categories=get_categories($args);
      foreach($categories as $category) {
        echo '<h3>' . $category->name . '</h3>
        <div>';
            global $post;
            $args = array( 'posts_per_page' => -1, 'category' => $category->term_id, 'orderby' => 'name', 'order' => 'ASC' );
            //alternatively this also works:  'nopaging' => true
            $myposts = get_posts( $args );

            if (!$myposts) {
                echo 'Sorry there are currently no classes in this category';
                }
            else {
            foreach( $myposts as $post ) :  setup_postdata($post);
            echo  '<p><a href="' . get_permalink($post->ID) . ' " style="color:#7c7c7c; font-size: 1em; text-decoration:none !important; line-height:80%;">' . get_the_title($post->ID) . '</a></p>';
            endforeach;
            }
        echo  '</div>
       ';
    }
?>

`

Upvotes: 1

Mohd Moe
Mohd Moe

Reputation: 577

<?php
$myposts = get_posts( $args );
if($myposts){
    //found posts
}else{
    //no posts
}
?>

UPDATE: PLEASE check if the code works probably and THEN compare it with your code, i have commented on the changes i made, so its your chance to learn:

$i=0;

$args = array( 'numberposts' => 5, 'category' =>5,'order'=>'DESC','orderby'=>'post_date','suppress_filters' => 0 );

$myposts = get_posts( $args );

//check if $myposts
if(!$myposts){
    //the $myposts has no posts, print the error message
    echo "<li>";
    echo "This category has zero posts";
    echo "</li>";
}else{
    //the category has one more or more posts
    $has_posts = true;
    foreach( $myposts as $post ) :  setup_postdata($post); ?>


    <?php $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'single-post-thumbnail' ); ?>

    <li>

    <?php if($image){ ?>


    <div class="news_left"><a href="<?php the_permalink(); ?>"><img src="<?php echo $image[0]; ?>" alt="" width="191" height="132" /></a></div>

    <?php } ?>

    <?php
        $content = apply_filters('the_content', get_the_content());
        $content = explode("</p>", $content);
    ?>

    <div class="news_right">

        <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>

        <span class="date">Date: <?php the_time('j/m/Y') ?></span>

        <?php echo $content[1] . "</p>";//echo String::content_limit(200,'<p>'); ?>

        <a href="<?php the_permalink(); ?>">Read More</a>

    </div> 

    <div class="clear"></div>   

    </li>

<?php
    $i++; endforeach; 
}
?>

Upvotes: 2

Related Questions