ho.s ho.s - 4 months ago 30x
PHP Question

WordPress the_content() does not show images (if not other content surrounding)

I build a custom theme for WordPress(4.4.2). I uses the standard built-in Editor to create posts. If I create a Post with, say, a headline and a paragraph AND an image, the content is shown (so is the image). But If I just type in a title and in the content area of the editor I leave JUST the image with no further text, it will not be shown on the website.

<?php if (have_posts()) : while (have_posts()) : the_post();?>
<div class="container-fluid site-content content-area" role="main">
<div class="container">
<?php if (!empty_content($post->post_content)) :?>
<div class="content row col-md-10 xcentered">

<?php the_content(); ?>
<?php endif; ?>
<?php endwhile; endif; ?>

I also tried the code without the if statement, but the_content() does not display an image without any other content.

Everything but the div.container is rendered. And as soon as I add just a single character before/after the image title, character AND image are rendered.

Any suggestions where (else) I have to make changes? Why is an image not recognized "standalone"?


The function 'empty_content' you are using, which you have provided in the comments on your question:

function empty_content($str) { 
    return trim(str_replace('&nbsp;','',strip_tags($str))) == '';

When I put <img src="someimg.png"> into this function, it returns true, meaning your <div> is not rendered.

This is exactly the behavior you are describing.

Try to http://phpfiddle.org/ the following code:

function empty_content($str) { 
    return trim(str_replace('&nbsp;','',strip_tags($str))) == '';

$only_img = '<img src="someimg.png">';
$img_and_more = '<img src="someimg.png"><p>Some other stuff</p>';


You will see that the $only_img variable dumps to true and the $img_and_more dumps to false.