what you are looking for is call in the WordPress world a MetaBox and just like Yoast SEO you need to use add_meta_box() function to add your own.
there is a great tutorial and class you can use in your plugin at deluxeblogtips.com
I would suggest you use that for a starting point.
Related Posts:
- Remove Meta-boxes (Yoast SEO plugin) [duplicate]
- Disabling Yoast, All-in-One, and Rank Math on Certain Pages within a Plugin
- Insert meta-description into Yoast-SEO input-field via JavaScript
- Is it ever okay to include inline CSS in plugins?
- Is it mandatory to use $wpdb->prefix in custom tables
- add_action hook for completely new post?
- Is get_option function cached?
- How do I log plugin (cron) actions?
- Is there a hook for when you switch themes?
- Problems after wp_set_password() containing an apostrophe
- Error getting correct blog_id on MU from functions.php
- product-attribute-slug-is-too-long-28-characters-max
- Front-End Form Submission in Shortcode
- Confusion on WP Nonce usage in my Plugin
- Plugin Localization
- Error : “Updating failed: The response is not a valid JSON response” with custom shortcode
- array_map() for sanitizing $_POST
- Add media and attach images to pages
- Why cant the WP Filesystem API read googlefonts.json?
- calling jquery function on plugin page
- Is there a faster way than wp_insert_post to add content to a blog
- Show comments fields in two columns
- Ajax in WordPress – path issue
- How to determine if the current file is loaded in a plugin or in a theme?
- Decrease RSS cache time in plugin?
- How to convert this cURL to wp_remote_get?
- Which action is triggered when a theme was modified?
- Check if someone is editing a post (this content is currently locked)
- How to add a custom tag in contact form 7 and change the output in email?
- WordPress setting with select – where is my mistake?
- How can I create a plugin that changes the title color of a website?
- How to check if Woocommerce Order number equals to post ID?
- Two functions utilizing registration_errors filter
- Issue plugin commands in admin settings page
- Creating a shortcode, but getting tied up with OOP and Classes?
- Call PHP file within a plugin to activate function
- add_action not calling back to function
- Adding custom fields to WordPress nav menus
- Example Dashboard Widget, Cancel not working
- add_shortcode() not working inside of function
- How to add and remove a page
- correct way to call javascript into hook function
- “dashboard”-named PHP file doesn’t get included
- How to get plugin activate URL to use URL vars?
- rewrite URL based on selected taxonomy for post page
- Woocommerce – Convert Delivery method into a custom field
- Updating Woocommerce Settings API when WordPress Settings API saved and vise versa
- How to Upload Images From a Folder (Not WP_Uploads)
- How to give a download link to a .csv file from the custom plugin?
- Possible to get all posts with my shortcode?
- What’s wrong with this post__not_in argument?
- Plugin uninstall function is not working
- Loading custom js file on the admin page through plugin
- How to prevent someone from entering strings without making it available for translation?
- First and last name fields not filled when using wp_insert_user
- I am unable to save my data from a form
- Check if post belongs to any category
- WordPress – manually relate a post to page(s)?
- Styles don’t load correctly. Insecure content
- How to use apiFetch to get author information in Gutenberg properly?
- Gutenberg blocks error: Each child in a list should have a unique “key” prop
- Can we use a library under MIT license in a WooCommerce plugin?
- How to display the specific post content by using POST ID
- Soap web service request from wordpress plugin
- How to list all images used on a specific page?
- Create fixed static pages
- Use options to control jQuery plugin
- Including template in shortcodes
- Is there anything special required to make a plugin work in a multisite environment?
- How to exclude categories from get_categories() select list inside a widget admin panel
- How to exclude “uncategorized” from custom categories widget?
- How to create wordpress media library UI on plugin page
- Why my theme’s css not working on another site
- How to create dynamic content with get_post_meta?
- Override category archive page title (not the head title)
- Using custom IDP with WP
- Trying to run a Ajax request from a checkout form in woocommerce via a custom plugin
- get_queried_object_id combined with wp_redirect gets wrong id
- Using WordPress Boilerplate (WPBP) for WP Multisite Plugin
- WordPress5.2.3: Better File Download Plugin validation issue
- How do I make secure API calls from my WordPress plugin?
- esc_attr() on hard coded string
- Creating a return url for getting data from external api
- WordPress Plugin Boilerplate – add actions and/or filters based on user’s role
- How to handle ajax Request in a complex-structured plugin?
- How to use functions from Woocommerce documentation?
- Is it possible to restore an expired transient?
- Use a page as a template for a custom post type
- WP API users per page
- action callback, for action dispatched as reported by hook sniffer, not called
- How to use get_pages( ) correctly with ‘child_of’ to replace page with child page
- variable created in page.php is null inside of header.php
- Access WordPress Tag Function From Modal
- Problem with Poedit [closed]
- Insert plugin html content to a specific spot in the frontpage
- Is Explicit Versioning a better alternative to Semantic Versioning for wordpress?
- Is there a canonical way for a plugin to install a mu-plugin or drop-in?
- How can create a custom plugin to call my webapi after any registration or membership plugin functionality
- Calling get_header() with installed FSE theme
- Reinitiate Gutenburg’s blocks using javascript