I think there’s no really huge difference, you choose the tool that you feel most comfortable yourself. Plugins have the drawbacks you mentioned, and doing them from scratch can be a bit slow and tedious.
The 3rd alternative, that I find really good, is a PHP class that does all the heavy lifting for you, but is still light and easy to use, e.g. Easy-WordPress-Custom-Post-Types. This particular class does custom taxonomies and metaboxes also. Very handy. So you’ll eliminate bunch of plugins with one hit.
Related Posts:
- How often do you need to register_post_type?
- update a post meta from a single table cell TablePress
- update custom post type meta from a shortcode
- Metabox not show in categories custom post type cmb2
- Custom fields for custom post type
- Simple way to hide\show an announcement (just a div) on homepage?
- Why is this function so slow?
- Query all posts where a meta key does not exist
- Is It Possible To Add Custom Post Type Menu As Another Custom Post Type Sub Menu
- Can the Next/Prev Post links be ordered by menu order or by a meta key?
- what is the correct way to compare dates in a WP query_posts meta_query
- Advanced search form with filters for custom taxonomies and custom fields
- Delete all posts of a custom post type—efficiently
- Create a custom archive page for a custom post type in a plugin
- Meta query with boolean true/false value
- Media library – Limit images to custom post type
- Get post with multiple meta keys and value
- Correctly delete posts with meta and attachments [duplicate]
- How to Add Custom Taxonomy To Woocommerce Plugin
- Storing revisions of metadata for custom post type
- Development of a WordPress Search Plugin – Best Practices
- Prevent trash/delete action on specific post types
- Custom field values deleted when trashing custom post type
- How to get all custom fields of any post type
- How to add custom content template part for a custom post type on main query using a plugin
- Update CPT meta data using REST API
- Admin Area Custom Type Search By Meta Fields Without Title & Content
- Echo all meta keys of a custom-post TYPE
- Change capability type of post type registered by plugin
- Custom Post type – how to get checkbox to update meta field to null
- How can I filter posts by post_parent in the admin?
- How do I Paginate Search Results for Custom Post Types?
- Rewriting ‘rewrite’ slug for custom post type used by plugin
- Ordering posts having multiple post-meta date fields
- WordPress Custom Post Type Admin Page really slow
- echo value from ‘select’ field type into page template using cmb2?
- Custom Post Type with Input fields to seperate table on database.
- How do I remove all the metaboxes for a custom post type?
- Custom Queries: Joining On Meta Values From Two Custom Post Types
- Gutenberg how to make attribute to save to meta
- register_taxonomy with multiple object type and update_count_callback
- How to programmatically create a connection with [Plugin: Posts 2 Posts] on cpt publish?
- Post metadata deletes itself
- How to create a mini directory in WordPress?
- How Can I save multiple records in same meta key?
- post_type_link filter causes 404 on the CPT page it’s used on
- Get all posts from custom post type and insert in select input as metabox
- How to use a dedicated template for the Custom Post Type from a plugin?
- Detect meta value changes when post is updated (post_updated)
- Search everything (posts, pages, tags, cpt, meta)
- Add Capabilities to Custom Post Type after it has been created [duplicate]
- Permalinks using event date (year & month) instead of publication date
- Custom Post Type: Set post_title equal to a custom post type field
- I can’t set meta_key in my custom post type query
- Grossly inefficient wordpress loops!
- Compare 3 custom fields and sort by oldest
- Include images from pages in wp search.php results in default wp search
- Separating Search Results By Post Type
- How Do I Use WP_Query to Run This Database Query as Search Result?
- List events by month
- WordPress Admin Panel search posts with custom post meta values along with title
- Date query for a custom meta field
- Creating a custom post type upon registration
- How to Update post status using meta data in Custom post TYpe
- Maintaining WP_Query Relation Among CPT, Custom Taxonomy, Permalinks- CPT UI
- Rest Api v2 orderby meta_key in custom post type
- bulk Update post_meta with default values
- Reason action hook won’t work with update_post_meta from frontend form? Alternative?
- Change plugin’s has_archive = true to false?
- Getting arguments for register_post_type from a plugin generated post type
- Updating post meta for custom post types
- Can’t sort order of wp_query with 2 meta keys
- Showing Meta Data for Custom Post Types?
- How to get source of custom meta image?
- Having trouble with custom post type / meta box
- Query for posts from any post type but only add instock products
- How can I include meta box content when searching?
- Custom Meta Boxes – Nonce Issue – Move to trash issue
- Remove POST_TYPE from custom post type permalink
- Query posts between two dates (custom meta keys) CMB2
- How to localize value of posts
- Used with meta_query in query_posts works slowly
- Displaying Meta Box Image
- Custom post type category not displaying in custom post type
- Is there any performance consideration when using Custom Post Types?
- Change upload_dir folder at a certain cpt but cant change back
- How to add post_author column to custom post type
- How to register custom post types in a plugin?
- Display custom taxonomy as dropdown list
- How to make custom post meta wp_editor translatable?
- Automatically adding meta data to posts or multiple query help
- How to keep a check box in custom meta box for custom post type checked by default for add new post?
- How to add multiple featured image in meta box in post editor?
- Show metabox in custom-post-template depending on taxonomy term?
- How to append element after thumbnail
- ACF Upload Image in repeater from front-end with custom form? – add_post_meta()
- Best practice for adding posts in bulk
- update_post_meta() whenever custom post type is updated
- Formatting custom meta box date from YYYY/MM/DD to a more readable alternative
- Trigger “unsaved changes” dialog for custom post meta changes