WP Manifestindependent plugin directory
manifest / users / postgate-manager

Story Submission System

PostGate Manager is a powerful WordPress plugin that enables user registration, admin approval, and frontend post or story submission with full control and security.

by Your Name · github.com/bikasraj/postgate-manager · website

0stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/bikasraj/postgate-manager/archive/refs/heads/main.zip

Story Submission System — WordPress Plugin v1.2

A production-ready WordPress plugin for frontend story submissions with a full user account system, an independent user dashboard, and an admin review workflow.


What's New in v1.2

Feature Details
User Registration & Login Frontend auth panel — register, login, logout with no WP dashboard access
Account Approval Workflow All new accounts start as "Pending". Admin approves/rejects from Users list
User Dashboard Separate frontend page via [sss_user_dashboard] shortcode
My Stories panel Users see all their submissions with status — Pending, Published, Not Published
Story submit gate Only approved accounts can reach the submission form
Story status emails User notified by email when their story is published or rejected
Account approval emails User notified when admin approves their account
Admin user column "Story Account" column in WP Users list with one-click Approve / Reject
User link in submissions Admin submission list shows linked WP user + account status badge

Full Feature List

Frontend

  • 4-step submission form with animated progress bar ([story_submission_form])
  • User dashboard independent of WordPress admin ([sss_user_dashboard])
  • Registration form — First name, last name, email, phone, password + strength meter
  • Login form — Email + password, remember me, forgot password link
  • Auth gate — Unapproved or logged-out users see a clear message instead of the form
  • AJAX throughout — no page reloads for login, register, logout, or story fetch
  • Drag-and-drop file uploads (JPG, PNG, MP4; max 50 MB each)
  • Responsive design — sidebar collapses on mobile

Dashboard Panels

Panel What it shows
Overview Account status notice, stats (Total / Pending / Published / Not Published), recent 5 stories
My Stories Full filterable table of all submissions with status pills
Submit Story Embeds the full 4-step submission form (approved accounts only)
My Account View profile info + update name / phone

Admin

  • Story Submissions CPT with custom columns — Submitter (with user link + status badge), Category, Files, Submitted date, Status
  • Approve / Reject quick actions in list table and meta boxes
  • Account Approval column in WP Admin → Users with Approve / Reject one-click links
  • Admin notices after every action

Email Notifications

Trigger Recipient
New story submission Site admin
New user registration Site admin
Account approved User
Story published (approved) User
Story rejected User

File Structure

story-submission-system/
├── story-submission-system.php          ← Main plugin file (v1.2)
├── includes/
│   ├── class-sss-post-type.php          ← CPT + meta boxes + story status emails
│   ├── class-sss-shortcode.php          ← [story_submission_form] + auth gate
│   ├── class-sss-grid-shortcode.php     ← [story_grid] public display
│   ├── class-sss-ajax.php               ← AJAX submit handler + auth check
│   ├── class-sss-admin.php              ← Admin columns, row actions, user link
│   ├── class-sss-email.php              ← HTML email helper
│   ├── class-sss-auth.php               ← NEW: Register / Login / Logout + account approval
│   └── class-sss-dashboard.php         ← NEW: [sss_user_dashboard] shortcode + AJAX
├── templates/
│   └── single-sss_submission.php       ← Single story front-end template
└── assets/
    ├── css/
    │   ├── form.css                     ← Multi-step form styles
    │   ├── grid.css                     ← Story grid styles
    │   ├── dashboard.css                ← NEW: Auth panel + dashboard layout
    │   └── admin.css                    ← Admin list table styles
    └── js/
        ├── form.js                      ← Multi-step logic + AJAX submit
        ├── grid.js                      ← Story grid AJAX
        └── dashboard.js                 ← NEW: Login/register/logout + dashboard JS

Installation

  1. Upload the story-submission-system folder to /wp-content/plugins/
  2. In WordPress Admin → Plugins, activate Story Submission System
  3. Go to Settings → Permalinks and click Save Changes once (registers CPT slug)

Setup Checklist

Step 1 — Create the Dashboard Page

  1. Pages → Add New
  2. Title it anything (e.g. "My Dashboard" or "Story Portal")
  3. Add the shortcode: [sss_user_dashboard]
  4. Publish the page
  5. This is your only page users need — login, register, submit, track — all here

Step 2 — (Optional) Dedicated Submission Form Page

If you want a standalone form page as well:

  1. Pages → Add New, add [story_submission_form]
  2. The form will only render for approved logged-in users; others see a notice

Step 3 — Approving Users

  1. Go to WP Admin → Users
  2. Find the new registrant — look for the "Story Account" column
  3. Click Approve — user gets an email notification instantly
  4. User can now log in and submit stories

Step 4 — Reviewing Stories

  1. Go to WP Admin → Story Submissions
  2. Click Approve to publish (user gets an email) or Reject to trash (user gets an email)

Shortcodes

Shortcode Description
[sss_user_dashboard] Full user portal — login, register, dashboard, submit form
[story_submission_form] Standalone 4-step submission form (auth-gated)
[story_grid] Public grid of published stories

User Account Flow

User visits Dashboard page
        │
        ├─ Not logged in → Shows Login / Register tabs
        │       │
        │       ├─ Register → Account created (status: Pending)
        │       │             Admin notified by email
        │       │             Admin approves from Users list
        │       │             User notified by email ← Account Approved
        │       │
        │       └─ Login → Checks approval status
        │
        ├─ Logged in, Pending → Dashboard shows "Awaiting Approval" notice
        │
        ├─ Logged in, Rejected → Dashboard shows "Not Approved" notice
        │
        └─ Logged in, Approved → Full dashboard
                ├─ Overview (stats + recent stories)
                ├─ My Stories (full table with filters)
                ├─ Submit Story (4-step form)
                └─ My Account (profile update)

Story Status Flow

User submits story
      │
      └─ Status: Pending (visible in user dashboard)
              │
              ├─ Admin Approves → Status: Published
              │                   User receives "Story Live" email
              │
              └─ Admin Rejects → Status: Not Published
                                  User receives "Not Published" email

Developer Filters & Hooks

// Change admin notification recipient for new story submissions
add_filter( 'sss_notification_recipient', function( $email, $post_id ) {
    return 'editor@example.com';
}, 10, 2 );

// Run custom logic after a user account is approved
add_action( 'update_user_meta', function( $meta_id, $user_id, $meta_key, $meta_value ) {
    if ( '_sss_account_status' === $meta_key && 'approved' === $meta_value ) {
        // Your code here
    }
}, 10, 4 );

// Run custom logic after a story is submitted
add_action( 'wp_insert_post', function( $post_id, $post ) {
    if ( 'sss_submission' === $post->post_type && 'pending' === $post->post_status ) {
        // Your code here
    }
}, 10, 2 );

Security

  • Nonces on every AJAX request (submission, login, register, logout, profile update)
  • Capability checks on all admin approve/reject/user actions
  • All text inputs sanitised — sanitize_text_field(), wp_kses_post(), sanitize_email()
  • Passwords handled via wp_signon() — never stored or logged in plain text
  • File uploads validated via wp_check_filetype() against an allowlist
  • defined('ABSPATH') || exit in every file

Meta Keys Reference

User Meta

Key Values Description
_sss_account_status pending / approved / rejected Account approval status
_sss_phone string Phone number from registration

Post Meta (sss_submission)

Key Description
_sss_submitter_name Name at time of submission
_sss_submitter_email Email at time of submission
_sss_submitted_at MySQL datetime of submission
_sss_category_name Category name at time of submission
_sss_attachment_ids Array of attachment IDs
_sss_user_id WP user ID of the submitter

Requirements

  • WordPress 5.9+
  • PHP 7.4+
  • At least one category created (for the submission form dropdown)

Changelog

v1.2.0

  • Added class-sss-auth.php — frontend registration, login, logout, account approval
  • Added class-sss-dashboard.php[sss_user_dashboard] shortcode with full panel UI
  • Added assets/css/dashboard.css and assets/js/dashboard.js
  • class-sss-ajax.php — auth gate added; submissions now linked to WP user
  • class-sss-shortcode.php — auth gate added to [story_submission_form]
  • class-sss-post-type.php — story approved/rejected emails to submitter
  • class-sss-admin.php — user profile link + account status badge in Submitter column

v1.1.0

  • Multi-step form with progress bar
  • AJAX submission + drag-and-drop file uploads
  • Admin approve/reject quick actions
  • HTML admin email notifications

License

GPL-2.0+