nếu bài viết có nội dung


9

Tôi đang thiết lập một trang web WordPress một trang. Tôi nhận được một số trang được liệt kê trong trang web của tôi không có nội dung. Ví dụ, tôi sẽ lấy trang blog trống cũng như mẫu blog. Vì vậy, tôi nghĩ rằng tôi có thể kiểm tra xem trang có nội dung hay không và nó có đi trước và đăng thông tin đó không. Tôi gặp khó khăn khi làm cho nó hoạt động. Tôi đang sử dụng một truy vấn tùy chỉnh cho trang chủ. Vì vậy, tôi nghĩ rằng tôi có thể làm điều này

 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;

vấn đề là tôi gặp lỗi về mã đó và tôi không thể hiểu tại sao. Tôi gặp lỗi này

Lưu ý: Thuộc tính không xác định: WP_Query :: $ post_content in

Câu trả lời:


14

Nội dung là một thuộc tính của postđối tượng, không phải của đối tượng truy vấn.

Sử dụng $posthoặc get_post()thay thế:

if( '' !== get_post()->post_content ) {
// do something
}

3

Thế còn

if ( !empty( get_the_content() ) ){ 
//code 
}

Bạn không thể truyền một hàm thành empty()một biến. Trước tiên bạn phải lưu trữ nó trong một biến. Ngay cả sau đó, nó sẽ không hoạt động, vì có thể có một số khoảng trống trong nội dung của bạn.
Jack Johansson

1
Đây là làm việc cho tôi! bạn có chắc không? Ít nhất là trong PHP 7
Juan Solano

2

Điều này cũng hoạt động và kiểm tra những thứ như thẻ đoạn trống hoặc  trong nội dung có thể khiến kiểm tra bình thường không thành công. Xem http://blog.room34.com/archives/5360 để biết ý tưởng ban đầu - chỉ cần ghi lại ở đây để tôi có thể tìm lại. : O)

Đặt cái này trong hàm của bạn.php:

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

Và đặt cái này ở nơi bạn muốn chạy kiểm tra:

if (function_exists('empty_content') && empty_content($post->post_content)) { ... }

Điều đó sẽ trở lại truenếu nội dung trống, falsenếu không.


1

tôi đã thực hiện một số phương thức "has_content ()" trong nhiều năm qua và luôn có đủ thời gian ở giữa vì vậy tôi cần tìm kiếm lại một chút để trả lời câu hỏi này.

dù sao đi nữa - đây là giải pháp của tôi, mà tôi muốn tìm lần sau ở đây - vì vậy nó là để tham khảo.

tất cả các hàm "vòng lặp bên trong" có thể được thay thế bằng một đối tượng bài "post_content"

trong hàm.php và các tệp tương tự:

// 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;
}

như chức năng

// call inside the loop
function mytheme_has_content(){
  return !empty(apply_filters('the_content', get_the_content()));
}

mẫu bên trong vòng lặp:

<?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 } ?>

đây là lần thứ hai tôi tham khảo ý kiến ​​này, tôi sẽ để lại một bình luận mỗi lần tôi quay lại với mục đích statistik
Thomas Fellinger
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.