# 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>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.minical.io/build-an-extension/store-custom-data/posts.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
