Paper Tipping Addons
Tipping addons for Woocommerce
by Paperhouse · github.com/xianmalik/tipping-addons-woocommerce
★ 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/xianmalik/tipping-addons-woocommerce/archive/refs/heads/main.zip
Paper Tipping Addons
By: PaperHouse Agency
A music artist marketplace and tipping system for WordPress — built on WooCommerce, JetEngine, and Elementor.
Requirements
| Dependency | Purpose |
|---|---|
| WordPress | Core platform |
| WooCommerce | Cart, orders, product management |
| JetEngine | Dynamic content / meta fields |
| Elementor | Page builder (tip widget) |
Installation
# 1) Copy or symlink the plugin folder into your WordPress install
cp -r paper-tipping-addons /path/to/wp-content/plugins/
# 2) Activate from WordPress Admin → Plugins
# On activation the plugin automatically creates:
# - The music_artist_vendor user role
# - The wp_song_tips database table
# - All required WooCommerce account rewrite endpoints
Features
For Artists
- Registration — dedicated form via
[artist_registration_form]shortcode; users assigned themusic_artist_vendorrole - Song Management — upload up to 5 songs per artist (cover image, preview clip, full MP3, full WAV)
- Artist Profile — bio and profile picture editable from the My Account dashboard
- My Tips — earnings summary per song with total tips received
- Withdrawals — withdraw earnings to a PayPal account (minimum $10); full withdrawal history shown
For Fans / Customers
- Tip Widget — Elementor widget placed on any song page; fans pick an amount and add it to the WooCommerce cart
- Sticky Cart — floating cart icon via
[paperhouse_cart_icon]shortcode that updates live on tip addition - Song Downloads — purchased/tipped songs available under My Account → Song Downloads
For Admins
- Song Tips panel — WP Admin → Song Tips shows every tip with song, amount, customer, and date
- PayPal Settings — Admin → Song Tips → PayPal Settings to configure OAuth credentials and sandbox mode
Shortcodes
| Shortcode | Description |
|---|---|
[artist_registration_form] |
Renders the artist registration form |
[paperhouse_cart_icon] |
Renders the sticky floating cart icon |
WooCommerce Endpoints
| Endpoint | Description |
|---|---|
/my-account/artist-profile/ |
Artist profile settings |
/my-account/artist-sales/ |
Tips summary + withdrawal |
/my-account/manage-songs/ |
Song list with edit/delete |
/my-account/add-song/ |
Upload a new song |
/my-account/edit-song/ |
Edit an existing song |
/my-account/delete-song/ |
Delete confirmation |
/my-account/artist-withdrawal/ |
Withdrawal form |
/my-account/song-downloads/ |
Customer download history |
Project Structure
paper-tipping-addons.php # Plugin entry point — constants, boot, activation hook
includes/
core/
class-artist-query.php # Static DB/query utility (earnings, song count, tipped songs)
class-upload-handler.php # Static file upload utility (audio + image with MIME validation)
admin/
admin-panel.php # WP Admin menu: tips table + PayPal settings
performance-fixes.php # Admin-side performance tweaks
artist/
artist-vendor.php # Main artist orchestrator (endpoints, menus, registration, profile)
dashboard.php # My Account dashboard (artist vs customer view)
withdrawal.php # Withdrawal form + AJAX processing
songs/
add.php # Add song handler
edit.php # Edit song handler
delete.php # Delete song handler
manage.php # Song list handler
frontend/
sticky-cart.php # Floating cart icon shortcode
tip-widget.php # Elementor tip widget
woocommerce/
cart-integration.php # Add-to-cart AJAX, order processing, download email
cart-filters.php # Price hooks, cart item meta, order item labels
integrations/
paypal.php # PayPal OAuth2 + Payouts API
templates/ # PHP partials — logic files set vars then include these
assets/
css/ # Scoped stylesheets (artist, frontend, woocommerce)
js/ # Vanilla JS (artist, frontend)
images/
cart-icon.png # Sticky cart icon
logo.webp # Site logo used in login form
Database
Table: wp_song_tips
| Column | Type | Description |
|---|---|---|
id |
bigint | Primary key |
song_id |
bigint | WooCommerce product ID of the tipped song |
tip_amount |
decimal | Amount tipped |
customer_name |
varchar | Buyer's billing name |
customer_id |
bigint | WP user ID (0 = guest) |
order_id |
bigint | WooCommerce order ID |
song_mp3 |
varchar | MP3 download URL |
song_wav |
varchar | WAV download URL |
created_at |
datetime | Tip timestamp |
WordPress Options
| Option key | Description |
|---|---|
tipping_paypal_client_id |
PayPal app Client ID |
tipping_paypal_client_secret |
PayPal app Client Secret |
tipping_paypal_sandbox |
'1' = sandbox, '0' = live |
Development Notes
- No build system — pure PHP/CSS/JS, no
npmorcomposer - Path constants
PAPER_TIPPING_PATHandPAPER_TIPPING_URLdefined in the main file and used everywhere - All HTML lives in
templates/— logic files only set variables thenincludethe template - Reusable queries go through
ArtistQuery, file uploads throughUploadHandler - Artists are capped at 5 songs — enforced in both
add.phpand the AJAX handler - Withdrawal minimum is $10 — enforced server-side in
withdrawal.php
License
This project is open source and available under the MIT License.