ループの外側から投稿コンテンツを取得する
-
-
IDがわからない?`get_queried_object_id()`を活用してください!https://developer.wordpress.org/reference/classes/wp_query/get_queried_object_id/Don't know the ID? Make use of `get_queried_object_id()` ! https://developer.wordpress.org/reference/classes/wp_query/get_queried_object_id/
- 0
- 2016-04-12
- jave.web
-
10 回答
- 投票
-
- 2012-05-10
get_page()
を使用して静的ページの$post
オブジェクト:$page_id=302; $page_object=get_page($page_id); echo $page_object->post_content;
編集
同様に、
get_post()
を使用して投稿の$post
オブジェクト:$post_id=302; $post_object=get_post($post_id); echo $post_object->post_content;
You can use
get_page()
to return the$post
object of a static page:$page_id = 302; $page_object = get_page( $page_id ); echo $page_object->post_content;
Edit
Similarly, you can use
get_post()
to return the$post
object of a post:$post_id = 302; $post_object = get_post( $post_id ); echo $post_object->post_content;
-
これを使用してもショートコードは機能しますか?Do shortcodes still work when using this?
- 0
- 2014-02-20
- Tim Baas
-
ちょうどそれがそうではないことがわかりました.最初に `setup_postdata($post);`を使用し、その後、 `the_content();`を使用できます.Just found out it doesn't. Use `setup_postdata( $post );` first, after that, you can use `the_content();`
- 0
- 2014-02-20
- Tim Baas
-
`apply_filters( 'the_content'、$post_object->post_content);`を実行するだけです.You could just run `apply_filters( 'the_content', $post_object->post_content );`
- 5
- 2017-03-01
- Nathan Powell
-
- 2014-09-14
投稿のコンテンツをループの外に出すには、次のように書くことができます
global $post; $content = $post->post_content; if ( !empty( $content ) ) : echo $content; endif;
to get the content of the post outside the loop you can write something like this
global $post; $content = $post->post_content; if ( !empty( $content ) ) : echo $content; endif;
-
- 2014-03-23
コンテンツにショートコードが含まれている場合は、以下を使用する必要があります:
$post_id = 22; $post_object = get_post( $post_id ); echo do_shortcode( $post_object->post_content );
If your content include shortcodes, you should use:
$post_id = 22; $post_object = get_post( $post_id ); echo do_shortcode( $post_object->post_content );
-
ショートコードをしないでくださいhttps://kovshenin.com/2013/dont-do_shortcode/Don't do shortcode https://kovshenin.com/2013/dont-do_shortcode/
- 0
- 2015-06-24
- Brad Dalton
-
そのページは、「遅いかもしれない」と「ショートコードが呼び出す関数を使用するだけでよい」と言う以外に、 `do_shortcode`を避けるための説得力のある理由を提供していません.これらの理由は、最も単純なシナリオの最も些細な場合にのみ有効です.ショートコードが別の場所で生成された場合、複数のショートコードがある場合、またはショートコードが他のコンテンツやマークアップと混在している場合は失敗します.やむを得ない理由がなければ、 `do_shortcode`を避けるためのステートメントに同意しません.これは[時期尚早の最適化](http://ubiquity.acm.org/article.cfm?id=1513451)のようなにおいがします.That page doesn't provide a compelling reason to avoid `do_shortcode` other than saying, "It might be slow" and "You can just use the function that the short code calls." Those reasons are only valid for the most trivial for the most simple scenarios. It fails when the shortcode is generated somewhere else, or if there are multiple shortcodes, or shortcodes mixed in with other content and markup. Without a compelling reason, I would disagree with the statement to avoid `do_shortcode`. This smells like [premature optimization](http://ubiquity.acm.org/article.cfm?id=1513451).
- 1
- 2017-04-17
- Jeff
-
また、コードと元のショートコードのコードとの間の結合も増加します.ショートコードのバッキングメソッドの名前が変更されたり、署名が変更されたりすると、コードが壊れます.And it also increases the coupling between your code and the original shortcode's code. If the shortcode's backing method is ever renamed or the signature changes, your code will break.
- 0
- 2017-04-17
- Jeff
-
- 2014-05-23
完全を期すために、上記のTimのコメントに基づいて、 StephenHarrisの記事、
the_content()
の使用を可能にするソリューションは次のとおりです.$post_id = 302; global $post; $post = get_post($post_id); setup_postdata( $post ); the_content(); wp_reset_postdata( $post );
したがって、フィルターが適用され(段落が挿入されるなど)、ショートコードが機能します.
For completeness, building on Tim's comment above and inspired by Stephen Harris's article, the solution that enables use of
the_content()
is:$post_id = 302; global $post; $post = get_post($post_id); setup_postdata( $post ); the_content(); wp_reset_postdata( $post );
And hence filters get applied (paragraphs will be inserted etc.) and shortcodes work.
-
これは私のブラウザをほとんどクラッシュさせました:/アンパサンドを取り除くことは助けになります、しかしそれはまだショートコードを解析していません.This almost crashed my browser :/ taking out the ampersand helps, but it's still not parsing shortcodes.
- 0
- 2015-10-05
- Zade
-
- 2015-06-24
ターゲットの投稿ID(302)がわかっているので、ループの外で使用できるこの簡略構文が役立つ場合があります(ただし、そのパフォーマンスは他の代替方法とほぼ同じです:)
echo(get_post_field('post_content',302));
Since you know your target post ID (302), you may find useful this shorthand syntax that you can use out of the loop (though its performance is pretty much the same as in any other alternative method:)
echo(get_post_field('post_content',302));
-
- 2016-02-08
get_post_data()
関数を使用して、ループの外に投稿を取得できます.このコードをfunctions.phpに配置しますfunction get_post_data($postId) { global $wpdb; return $wpdb->get_row("SELECT * FROM $wpdb->posts WHERE ID=$postId"); }
次に、このスニペットを追加して、プロセスをさらに制御します
<?php $data = get_post_data(302); echo $data->post_date; // post date echo $data->post_title; // post title echo $data->post_content; // post content echo $data->comment_count; // comments number ?>
You can use the
get_post_data()
function to get post outside the loop. Place this code in functions.phpfunction get_post_data($postId) { global $wpdb; return $wpdb->get_row("SELECT * FROM $wpdb->posts WHERE ID=$postId"); }
and then add this snippet for more control on the process
<?php $data = get_post_data(302); echo $data->post_date; // post date echo $data->post_title; // post title echo $data->post_content; // post content echo $data->comment_count; // comments number ?>
-
- 2017-03-01
前述のように、
get_post
と$post_object->post_content
を使用したソリューションを使用できますが、その投稿を使用する前にチェックを追加することを忘れないでくださいオブジェクト:function get_post_content( $post_id = null ) { $post_object = get_post( $post_id ); if ( ! $post_object ) { return ''; } //else return apply_filters('the_content', $post_object->post_content); } echo get_post_content( $other_post_id );
You can use, as said, the solution with
get_post
and$post_object->post_content
, but don't forget to add a check before you use that post object:function get_post_content( $post_id = null ) { $post_object = get_post( $post_id ); if ( ! $post_object ) { return ''; } //else return apply_filters('the_content', $post_object->post_content); } echo get_post_content( $other_post_id );
-
- 2016-04-20
get_the_content(postId)を呼び出すだけです
<?php echo get_the_content($postId); ?>
You can simply call get_the_content(postId)
<?php echo get_the_content($postId); ?>
-
実際、それは不可能です.より多くのリンクがある場合のコンテンツの最初の引数:https://codex.wordpress.org/Function_Reference/get_the_contentActually, that's not possible. First arg there is for the content when there is a more link: https://codex.wordpress.org/Function_Reference/get_the_content
- 2
- 2017-08-24
- joshcanhelp
-
- 2015-04-04
use
wp_reset_postdata();
動作します..(編集済み)<?php $args = array( 'post_type' => 'posttype', 'p' => 'post_id' ); $the_query = new WP_Query( $args ); if( have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post(); ?> <?php the_content(); ?> <?php endwhile; endif; wp_reset_postdata(); ?>
posttypeは、「post」、「page」、またはカスタム投稿タイプにすることができます.ここで、p=302は投稿IDです.うまくいくことを願っています.
use
wp_reset_postdata();
it will work.. (edited)<?php $args = array( 'post_type' => 'posttype', 'p' => 'post_id' ); $the_query = new WP_Query( $args ); if( have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post(); ?> <?php the_content(); ?> <?php endwhile; endif; wp_reset_postdata(); ?>
posttype can be "post" , "page" or your custom post type. Here p=302 is your post id.. Hope it will work.
-
ページの機能を壊す必要がない限り、 `query_posts`を使用しないでください.カスタムクエリには常に `WP_Query`または`get_posts`を使用してください:-)Never use `query_posts` unless you need to break page functionalities. Always use `WP_Query` or `get_posts` for custom queries :-)
- 2
- 2015-04-04
- Pieter Goosen
-
はい..あなたは正しいです..それはWp_Queryもできます..同じ結果が見つかりました..yes.. you are right.. It can Wp_Query as well.. same result found..
- 0
- 2015-04-05
- Jahirul Islam Mamun
-
`pre_get_posts`フィルターと`the_post`もあります.非常に詳細.There is also the `pre_get_posts` filter, and `the_post`. So much detail.
- 0
- 2017-03-01
- Nathan Powell
-
- 2012-05-10
次のように、コンテンツをカテゴリXに入れて、以前にquery_postを使用できます:
<?php query_posts('cat=X&showposts=1'); ?> <?php while (have_posts()) : the_post(); ?> <?= get_the_content(); ?> <?php endwhile; ?>
you can put content in a category X and use query_post before while like this :
<?php query_posts('cat=X&showposts=1'); ?> <?php while (have_posts()) : the_post(); ?> <?= get_the_content(); ?> <?php endwhile; ?>
ループ外の別のコンテンツからコンテンツを取得する方法はありますか?IDは302で、その内容を別のページに表示する必要があります.