Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/wildan-m/wp-recipe-hub/archive/refs/heads/main.zipNo built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.
Recipe Hub — WordPress Plugin
A community recipe sharing platform built as a WordPress plugin. Demonstrates custom post types, frontend user management, AJAX operations, and content submission workflows.
Features
- Custom Post Type —
rh_recipewith meta fields for prep time, cook time, servings, ingredients, and instructions - Custom Taxonomies — Cuisine (hierarchical) and Difficulty (flat) for organizing recipes
- Frontend User Profile — Logged-in users can edit their display name, email, bio, website, and password via
[rh_user_profile] - Frontend Recipe Submission — Users submit and edit their own recipes without accessing wp-admin via
[rh_submit_recipe] - Star Rating System — AJAX-powered 1-5 star ratings stored in a custom database table with per-user tracking
- AJAX Search & Filter — Real-time search by keyword, cuisine, difficulty, and sort order via
[rh_recipe_search] - Load More Pagination — Infinite-scroll style pagination for search results
Shortcodes
| Shortcode | Description |
|---|---|
[rh_user_profile] |
Frontend profile editor |
[rh_submit_recipe] |
Recipe submission / edit form |
[rh_recipe_search] |
Search, filter, and browse recipes |
[rh_recipe_rating id="123"] |
Star rating widget (auto-detects post if id omitted) |
Installation
- Upload the
recipe-hubfolder to/wp-content/plugins/ - Activate through Plugins > Installed Plugins
- Add taxonomy terms under Recipes > Cuisines and Recipes > Difficulty Levels
- Create pages and add the shortcodes above
Security
- All forms use WordPress nonces
- User input is sanitized with
sanitize_text_field(),sanitize_textarea_field(),sanitize_email(),wp_kses_post() - Output is escaped with
esc_html(),esc_attr(),esc_url() - AJAX handlers verify authentication and ownership before modifying data
- File uploads go through
media_handle_upload()for standard WordPress validation
Requirements
- WordPress 5.8+
- PHP 7.4+