投稿にコンテンツがある場合


9

1ページのWordPressサイトを立ち上げています。自分のサイトにコンテンツがないページがいくつか表示されています。たとえば、空のブログページとブログテンプレートを取得します。そのため、ページにコンテンツが含まれているかどうかを確認するためにチェックを入れて、その情報を投稿できるかどうかを考えました。うまく動かないのですが。ホームページにカスタムクエリを使用しています。だから私はこれができると思った

 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;

問題は、そのコードでエラーが発生し、理由がわからないことです。このエラーが発生する

通知:未定義のプロパティ:WP_Query :: $ post_content in

回答:


14

コンテンツはpost、クエリオブジェクトではなく、オブジェクトのプロパティです。

$postまたはget_post()代わりに使用:

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

3

どうですか

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

関数をempty()変数として渡すことはできません。最初にそれを変数に格納する必要があります。それでも、コンテンツにいくつかの空のスペースがある可能性があるため、機能しません。
ジャックヨハンソン

1
これは私のために働いています!本気ですか?少なくともPHP 7の場合
Juan Solano

2

これも機能し、空の段落タグなど のコンテンツや通常のチェックが失敗する可能性のあるコンテンツをテストします。元のアイデアについては、http://blog.room34.com/archives/5360を参照してください。ここで記録するだけで、もう一度見つけることができます。:O)

これをfunctions.phpに入れます。

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

そして、これをチェックを実行したい場所に置きます:

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

それは返されtrueたコンテンツが空の場合は、falseそうでない場合。


1

私はいくつかの "has_content()"メソッドを何年にもわたって実装してきましたが、その間に常に十分な時間があるため、この質問に答えるためにもう一度検索する必要があります。

とにかく-これは私の解決策です。次回ここで見つけたいので、参考にしてください。

すべての「内部ループ」関数は、postオブジェクト「post_content」で置き換えることができます

functions.phpと同様のファイル:

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

機能として

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

ループ内のテンプレート:

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

これは私がこれに相談するのは2回目です。統計の目的で戻ってくるたびにコメントを1つ残します
Thomas Fellinger
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.