Backlink Project Manager
A plugin to manage backlinking projects, URLs, and keywords.
by Your Name · github.com/zafarsoomro/backlink-project-manager
★ 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/zafarsoomro/backlink-project-manager/archive/refs/heads/main.zipA WordPress plugin for agencies and link-building teams to create backlink projects, assign them to internal users, collect backlink URLs, and export progress as CSV files. Administrators work inside wp-admin while assignees get a front-end dashboard powered by the [bpm_view_projects] shortcode.
Highlights
- Create backlink projects with unlimited target URLs and keyword notes.
- Assign each project to any WordPress user via AJAX-powered search/autocomplete.
- Organize outreach/backlink efforts into named groups that can be re-used per project.
- Track backlinks that users submit from the front-end and edit/delete them inline without reloading.
- Export a single project or the entire portfolio (both admin and user-specific exports) as CSV files.
- Hardened with WordPress nonces, capability checks, and
$wpdbhelpers for safe CRUD operations.
Folder Structure
backlink-project-manager/
├── backlink-project-manager.php # Plugin bootstrap, hooks, asset loading
├── admin/
│ ├── add-new-project.php # Admin UI for creating a project
│ ├── edit-project.php # Admin UI for updating a project
│ └── manage-projects.php # Project table + CSV export button
├── assets/
│ ├── css/
│ │ ├── bpm-dashboard-style.css # Admin table styles
│ │ ├── bpm-styles.css # Front-end styling
│ │ └── style.css # Misc helpers
│ └── js/
│ ├── ajax.js # Admin AJAX for create/delete + UI helpers
│ ├── bpm-backlink.js # Front-end inline editing for backlinks
│ ├── frontend.js # Placeholder for public enhancements (enqueued)
│ └── script.js # jQuery UI autocomplete for user search
├── frontend/
│ └── core-functions.php # Shortcode output, group/backlink logic, CSV exports
└── includes/
├── admin-menu.php # Registers all wp-admin pages
├── database.php # Activation hook + table creation helpers
├── functions.php # Core CRUD, AJAX callbacks, CSV exports
└── shortcodes.php # Reserved for additional shortcodes
Database Tables
includes/database.php provisions the following tables on activation (prefixed by wp_ unless your install overrides it):
| Table | Purpose | Key Columns |
|---|---|---|
bpm_backlink_projects |
Stores each project and owner | project_name, user_id, created_at |
bpm_backlink_urls |
Keeps target URLs + keyword notes | project_id, url, keywords |
bpm_project_groups |
Named buckets for backlink submissions | group_name |
bpm_project_group_assignments |
Many-to-many bridge between projects and groups | project_id, group_id |
bpm_user_backlinks |
Tracks backlinks users submit from the front-end | project_id, user_id, group_id, backlink_url, date_added |
Admin Workflow
- Projects menu – Created in
includes/admin-menu.phpwith sub-pages for managing projects, adding new ones, managing groups, and hidden edit/detail pages. - Create projects –
admin/add-new-project.phpposts viaassets/js/ajax.jstobpm_create_project, storing URLs/keywords and the assigned user. - Manage projects –
admin/manage-projects.phplists everything, links to edit/view pages, and exposes "Export All Projects" viaadmin-post.php?action=bpm_export_all_projects_csv. - Edit/View –
admin/edit-project.phpandbpm_view_project_page()handle updates, group listings, and backlink oversight with inline AJAX edit/delete controls. - Groups page –
bpm_project_groups_page()lets admins create or remove shared backlink groups with nonce-protected actions.
Front-end Workflow
- Shortcode – Place
[bpm_view_projects]on any page to give logged-in users their assignment dashboard. - Project list – Users see projects assigned to them, grouped backlinks, unassigned backlinks, and an export button (AJAX action
bpm_export_user_projects_csv). - Project detail – Selecting a project reveals URL/keyword matrices, existing groups, inline backlink tables, and forms to add backlinks or create a new group scoped to the project.
- Inline editing –
assets/js/bpm-backlink.jspowers edit/delete controls that talk tobpm_update_backlinkandbpm_delete_backlinkwithout page reloads. - CSV exports – Users can download either their entire portfolio or a single project's backlinks via the AJAX endpoints defined in
frontend/core-functions.php.
AJAX & Export Endpoints
| Action | Context | Description |
|---|---|---|
bpm_create_project |
Admin | Creates a project with URLs/keywords (nonce bpm_add_new_project). |
bpm_update_project |
Admin | Updates project name and URL set from the edit screen. |
bpm_delete_project |
Admin | Deletes a project and its URLs (bpm_delete_project nonce). |
bpm_manage_projects_user_search |
Admin | Autocomplete search for assigned_user field. |
bpm_delete_backlink, bpm_delete_backlink2 |
Admin & Front-end | Remove backlinks with per-row nonces. |
bpm_update_backlink, bpm_edit_backlink |
Admin & Front-end | Update backlink URLs inline. |
bpm_export_user_projects_csv |
Front-end | Generates user_projects_details.csv for the logged-in user. |
bpm_export_project_backlinks_csv |
Front-end | Produces per-project backlink CSVs for users. |
bpm_export_project_csv |
Admin | admin-post export for a single project with groups + backlinks. |
bpm_export_all_projects_csv |
Admin | admin-post export covering every project. |
Installation
- Clone or download this repository into
wp-content/plugins/backlink-project-manager. - Activate Backlink Project Manager in the WordPress Plugins screen.
- On activation the database tables are created via
bpm_create_tables(). - Visit Projects → Add New to seed your first project and assign a user.
- Drop the
[bpm_view_projects]shortcode into a page that only logged-in users can reach to expose the front-end dashboard.
Development Notes
- Written for PHP 7.4+/WordPress 6.x. Update
bpm_manage_projects_enqueue_scripts()if you need different jQuery UI versions. - Front-end editing relies on the localized
bpm_ajaxobject; keepbpm_enqueue_backlink_scripts()hooked for public pages. - CSV exports stream from PHP using
php://output; avoid premature whitespace or BOMs when modifying those functions. - The plugin header declares GPL-2.0; keep derivative work under a compatible license.
Roadmap Ideas
- Additional shortcodes (placeholder
includes/shortcodes.php). - Role-based dashboards or REST endpoints.
- PHPUnit/WP-CLI tests for data-layer helpers.
- UI polish (React/modern build tooling) if you prefer SPA-like admin screens.