get_post( int|WP_Post|null $post = null, string $output = OBJECT, string $filter = 'raw' )
Retrieves post data given a post ID or post object.
Description
See sanitize_post() for optional $filter values. Also, the parameter $post
, must be given as a variable, since it is passed by reference.
Parameters
- $post
(int|WP_Post|null) (Optional) Post ID or post object. Defaults to global $post.
Default value: null
- $output
(string) (Optional) The required return type. One of OBJECT, ARRAY_A, or ARRAY_N, which correspond to a WP_Post object, an associative array, or a numeric array, respectively.
Default value: OBJECT
- $filter
(string) (Optional) Type of filter to apply. Accepts 'raw', 'edit', 'db', or 'display'.
Default value: 'raw'
Return
(WP_Post|array|null) Type corresponding to $output on success or null on failure. When $output is OBJECT, a WP_Post
instance is returned.
Source
File: wp-includes/post.php
Changelog
Version | Description |
---|---|
1.5.1 | Introduced. |
User Contributed Notes
You must log in before being able to contribute a note or feedback.
'WEB > WP(WordPress)' 카테고리의 다른 글
Code To Integrate WordPress Media Uploader In Plugin or Theme (0) | 2018.04.10 |
---|---|
How to insert data using wpdb (0) | 2018.04.09 |
Using WPDB in standalone script? (0) | 2018.04.08 |
Get user role by ID Wordpress (0) | 2018.04.08 |
What action should I hook into when adding roles and capabilities? (0) | 2018.04.06 |
For reference, WP_Post OBJECT contains following fields:
WP_Post Object
(
[ID] =>
[post_author] =>
[post_date] =>
[post_date_gmt] =>
[post_content] =>
[post_title] =>
[post_excerpt] =>
[post_status] =>
[comment_status] =>
[ping_status] =>
[post_password] =>
[post_name] =>
[to_ping] =>
[pinged] =>
[post_modified] =>
[post_modified_gmt] =>
[post_content_filtered] =>
[post_parent] =>
[guid] =>
[menu_order] =>
[post_type] =>
[post_mime_type] =>
[comment_count] =>
[filter] =>
)
Expand full source code
Wouldn’t it be better practice to use get_the_title(..) in this case? directly accessing the post object’s data member would bypass applying filters and enforcing protected and private settings, unless that’s explicitly desired.
To get the title for a post with ID 7:
$post_7
= get_post( 7 );
$title
=
$post_7
->post_title;
Alternatively, specify the $output parameter:
$post_7
= get_post( 7, ARRAY_A );
$title
=
$post_7
[
'post_title'
];
If you need special things—[shortcodes], paragraph tags, anything exciting—in the content, you should apply the filters as opposed to using do_shortcode().
$post
= get_post( 42 );
$output
= apply_filters(
'the_content'
,
$post
->post_content );
For Reference : WP_Post Object has following properties, which are returned by get_post().
Member Variable Variable Type Notes
ID int The ID of the post
post_author string The post author's user ID (numeric string)
post_name string The post's slug
post_type string See Post Types
post_title string The title of the post
post_date string Format: 0000-00-00 00:00:00
post_date_gmt string Format: 0000-00-00 00:00:00
post_content string The full content of the post
post_excerpt string User-defined post excerpt
post_status string See get_post_status
for
values
comment_status string Returns: { open, closed }
ping_status string Returns: { open, closed }
post_password string Returns
empty
string
if
no password
post_parent int Parent Post ID (
default
0)
post_modified string Format: 0000-00-00 00:00:00
post_modified_gmt string Format: 0000-00-00 00:00:00
comment_count string Number of comments on post (numeric string)
menu_order string Order value
as
set through page-attribute when enabled (numeric string. Defaults to 0)
Expand full source code
If you have a shortcode in the content you should use:
$post
= get_post( 4304,ARRAY_A );
$output
= do_shortcode(
$post
[
'post_content'
]);
If you want to get a post by slug, you could do a new WP_Query, or use the get_page_by_path function: https://developer.wordpress.org/reference/functions/get_page_by_path/
You’ll need to use the post_type if you are not getting a page.
To Get author of the Post
$post_info
= get_post( 10 );
$author
=
$post_info
->post_author;