I am setting up a one page WordPress site. I am getting some pages listed in my site that does not have content. For example, I will get the empty blog page as well as the blog template. So I thought I could throw in a check to see if the page has content and if it does go ahead and post that information. I am having trouble getting it to work. I am using a custom query for the homepage. So I thought I could do this
if ( $page_query->have_posts() ) : while ( $page_query->have_posts() ) : $page_query->the_post();
if( $page_query->post_content != ''){
get_template_part( 'content', get_post_format() );
}
endwhile; endif;
problem is that I get an error on that code and I can't figure out why. I get this error
Notice: Undefined property: WP_Query::$post_content in
I am setting up a one page WordPress site. I am getting some pages listed in my site that does not have content. For example, I will get the empty blog page as well as the blog template. So I thought I could throw in a check to see if the page has content and if it does go ahead and post that information. I am having trouble getting it to work. I am using a custom query for the homepage. So I thought I could do this
if ( $page_query->have_posts() ) : while ( $page_query->have_posts() ) : $page_query->the_post();
if( $page_query->post_content != ''){
get_template_part( 'content', get_post_format() );
}
endwhile; endif;
problem is that I get an error on that code and I can't figure out why. I get this error
Share Improve this question edited Sep 10, 2017 at 20:18 Johansson 15.4k11 gold badges43 silver badges79 bronze badges asked Nov 6, 2013 at 0:50 JamieJamie 1,3635 gold badges25 silver badges47 bronze badgesNotice: Undefined property: WP_Query::$post_content in
4 Answers
Reset to default 24The content is a property of the post
object, not of the query object.
Use $post
or get_post()
instead:
if( '' !== get_post()->post_content ) {
// do something
}
What about
if ( !empty( get_the_content() ) ){
//code
}
i have implemented some "has_content()" methods for several times over years now and there is always enough time in between so i need to search again a bit to answer this question.
anyways - this is my solution, which i like to find the next time here - so its for reference.
all "inside loop" functions can be replaced by a post objects "post_content"
in functions.php and similar files:
// write inside the loop
$the_content = apply_filters('the_content', get_the_content());
if ( !empty($the_content) ) {
echo $the_content;
}
// with post object by id
$post = get_post(12); // specific post
$the_content = apply_filters('the_content', $post->post_content);
if ( !empty($the_content) ) {
echo $the_content;
}
as function
// call inside the loop
function mytheme_has_content(){
return !empty(apply_filters('the_content', get_the_content()));
}
template inside the loop:
<?php if ( $customQuery->have_posts() ) {?>
<?php while ( $customQuery->have_posts() ) {
$customQuery->the_post(); ?>
<?php $the_content = apply_filters('the_content', get_the_content()); ?>
<!-- html -->
<?php if ( !empty($the_content) ) { ?>
<div class="content">
<?php echo $the_content; ?>
</div>
<?php } ?>
<?php } ?>
<?php wp_reset_postdata(); ?>
<?php } ?>
This also works, and tests for things like empty paragraph tags or
in the content which might cause a normal check to fail. See http://blog.room34/archives/5360 for the original idea - just recording it here so I can find it again. :O)
Put this in your functions.php:
function empty_content($str) {
return trim(str_replace(' ','',strip_tags($str))) == '';
}
And put this where you want to run the check:
if (function_exists('empty_content') && empty_content($post->post_content)) { ... }
That will return true
if the content is empty, false
if not.
发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745330671a4622863.html
评论列表(0条)