jika posting memiliki konten


9

Saya sedang menyiapkan situs WordPress satu halaman. Saya mendapatkan beberapa halaman yang terdaftar di situs saya yang tidak memiliki konten. Sebagai contoh, saya akan mendapatkan halaman blog kosong serta template blog. Jadi saya pikir saya bisa memberikan cek untuk melihat apakah halaman memiliki konten dan apakah itu meneruskan dan memposting informasi itu. Saya kesulitan membuatnya bekerja. Saya menggunakan kueri khusus untuk beranda. Jadi saya pikir saya bisa melakukan ini

 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;

Masalahnya adalah bahwa saya mendapatkan kesalahan pada kode itu dan saya tidak tahu mengapa. Saya mendapatkan kesalahan ini

Perhatikan: Properti tidak terdefinisi: WP_Query :: $ post_content in

Jawaban:


14

Konten adalah properti dari postobjek, bukan objek permintaan.

Gunakan $postatau get_post()sebagai gantinya:

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

3

Bagaimana dengan

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

Anda tidak dapat melewatkan fungsi empty()sebagai variabel. Anda harus terlebih dahulu menyimpannya dalam variabel. Bahkan kemudian, itu tidak akan berfungsi, karena mungkin ada beberapa ruang kosong di konten Anda.
Jack Johansson

1
Ini bekerja untuk saya! apakah kamu yakin Setidaknya dalam PHP 7
Juan Solano

2

Ini juga berfungsi, dan menguji hal-hal seperti tag paragraf kosong atau  dalam konten yang dapat menyebabkan cek normal gagal. Lihat http://blog.room34.com/archives/5360 untuk ide asli - hanya merekamnya di sini sehingga saya dapat menemukannya lagi. :HAI)

Letakkan ini di functions.php Anda:

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

Dan letakkan ini di tempat Anda ingin menjalankan pemeriksaan:

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

Itu akan kembali truejika konten kosong, falsejika tidak.


1

saya telah menerapkan beberapa metode "has_content ()" untuk beberapa kali selama bertahun-tahun sekarang dan selalu ada cukup waktu di antaranya jadi saya perlu mencari lagi sedikit untuk menjawab pertanyaan ini.

Bagaimanapun - ini adalah solusi saya, yang saya ingin cari waktu berikutnya di sini - jadi untuk referensi.

semua fungsi "di dalam loop" dapat diganti dengan objek posting "post_content"

dalam functions.php dan file serupa:

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

sebagai fungsi

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

templat di dalam 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 } ?>

ini adalah kedua kalinya saya berkonsultasi ini, saya akan meninggalkan satu komentar setiap kali sekarang saya kembali untuk keperluan statistik
Thomas Fellinger
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.