# POSTS

### Posts

* A post is a content item stored in the posts table. Each has a post\_type assigned to it, which could be an extension setting or user data for the extension page or something else.
* All the data is stored in the Posts table and mapped with the company\_id and user\_id. Here are the important columns the Post table has.

### Structure of the miniCal Post Table

* `post_title` - can be a string like a description related to the post.
* `post_type` - can be a string this can define the type of functionality.
* `post_status` - can be a string (publish/unpublish) it determines whether the post is published or not.
* `post_date` - the Date-Time of a post when created.
* `company_id` - current company id (can get this from the session).
* `user_id` - logged-in user id (can get this from the session).

```php
// Create an post to the database
add_post($post);

// delete a post data. If the second parameter is true then
// the post is deleted permanently, default is false.
delete_post(int $post_id = null, bool $force_delete = false )

// get post form posts table.
get_post( $post );

// edit a post data of posts table
edit_post(array $post = null)
```

### Relationships Between Posts

The `post_parent` the field is an important one, as it stores information about relationships between different posts. These include:

* parent and child pages
* revisions and the post they relate to
* attachments and the post they were uploaded to

You can use the `post_parent` the field in various ways in your queries. For example, to query for child pages of a given page, you would use the following, where `ID` is the ID of the parent page:

```
'post_parent' => 'ID'
```

You could use a similar query to display attachments uploaded to a given post, or alternatively, you could query attachments with no parent (i.e. those uploaded directly to the media screen in the dashboard).&#x20;

To do this, you would use the following argument:

```
'post_parent' => '0'
```

<table><thead><tr><th>Method</th><th width="158">Description</th><th width="225">Parameters Description</th><th>Return value</th></tr></thead><tbody><tr><td><code>add_post()</code></td><td>Adds a new post value.</td><td><strong><code>add_post ($data)</code></strong><br><br><strong>1.</strong> array $data the data array of post.</td><td><strong>null</strong><br></td></tr><tr><td><code>get_post()</code></td><td>Get post value.</td><td><strong><code>get_post( $post )</code></strong><br><br><strong>1.</strong> mixed $post Int id of post or An Array of post data, this key will be added in where clause.</td><td><strong>mixed</strong><br>Either array or null, if post data is available or no error occurs, then array else null.</td></tr><tr><td><code>edit_post()</code></td><td>Update post value.</td><td><strong><code>edit_post(array $post = null)</code></strong><br><br><strong>1.</strong> array $post An Array of post data including post_id.</td><td><strong>mixed</strong><br>Either post_id or null, if post data is updated or no error occurs, then id else null.</td></tr><tr><td><code>detele_post()</code></td><td>Detele post value.</td><td><strong><code>delete_post(int $post_id = null, bool $force_delete = false )</code></strong><br><br><strong>1.</strong> int $post_id The id of the post. <strong>2.</strong> bool $force_delete flag to force delete a post, default is false..</td><td><strong>mixed</strong><br>Either true or null, if postmeta data is delete then true else null.</td></tr></tbody></table>

<br>
