Install
Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/velocity-developer/vd-store/releases/download/v1.4.16/vd-store-1.4.16.zipVersi: 1.4.14
VD Store adalah plugin inti untuk toko online.
Plugin ini menjadi dasar untuk:
- produk
- katalog
- keranjang
- wishlist
- checkout
- pesanan
- kupon
- tracking pesanan
- profil customer
- ulasan produk
Kalau butuh fitur seller, toko per penjual, atau checkout multi-seller, tambahkan VD Marketplace di atas plugin ini.
Cocok untuk apa
Pakai VD Store jika ingin membuat:
- toko online biasa
- katalog produk dengan checkout langsung
- produk fisik dan digital
- sistem order tanpa marketplace multi-seller
Fitur utama
- CPT produk:
store_product - CPT pesanan:
store_order - CPT kupon:
store_coupon - Taxonomy kategori produk:
store_product_cat - Produk fisik dan digital
- Harga reguler dan harga promo. Harga boleh kosong untuk produk katalog/inquiry.
- Opsi varian dengan harga tambahan atau harga akhir per pilihan
- Keranjang dan wishlist
- Checkout dan tracking order
- Kupon produk dan kupon ongkir
- Profil customer
- Ulasan produk dari halaman pesanan
- Label manual produk
- Dukungan dropship di checkout dan profil customer
- Integrasi ongkir dengan mode normal, gratis ongkir, dan nonaktif
- Pengaturan checkout untuk tetap mengumpulkan alamat saat ongkir gratis/nonaktif
- Integrasi pembayaran manual dan gateway
Instalasi singkat
- Aktifkan plugin
VD Store. - Buka menu pengaturan
VD Store. - Tentukan halaman sistem:
- katalog
- keranjang
- checkout
- terima kasih
- tracking order
- profil saya
- Isi pengaturan pembayaran dan ongkir.
- Tambahkan kategori produk.
- Tambahkan produk.
Jenis produk
Produk fisik
- wajib isi harga
- wajib isi berat
- ikut perhitungan ongkir
Produk digital
- wajib isi harga
- tidak wajib isi berat
- wajib isi file digital atau URL file digital
- jika cart hanya berisi produk digital, checkout tidak memaksa ongkir
Label produk
VD Store menyediakan label manual bawaan untuk merchandising produk:
- Best Seller
- Limited
- Pre Order
- Ready Stock
- New
- Recommended
- Sale
Label ini disimpan di meta _store_label dan dipakai oleh:
- thumbnail produk
- galeri produk
- katalog
- katalog print/PDF
Addon plugin bisa menambah atau mengubah daftar label lewat filter:
wp_store_product_labelswp_store_product_labels_registrywp_store_product_label_optionswp_store_product_label_badge_html
Kalau ingin menyesuaikan tampilan badge, gunakan filter wp_store_product_label_badge_html agar core tetap bersih.
Icon
VD Store memakai helper wps_icon() untuk semua icon UI.
Addon bisa menambah atau override icon lewat filter:
wp_store_iconswp_store_icon_registrywp_store_icon_html
Format yang didukung:
htmluntuk SVG finalrenderuntuk callback yang menerima data icon
Kalau icon baru tidak ada di registry addon, core tetap jatuh ke icon bawaan di template components/icons.php.
Alur customer
Katalog
Customer bisa:
- melihat daftar produk
- mencari produk
- filter kategori
- filter brand
- filter harga
- mengurutkan produk
- membuka landing archive kategori dan brand dengan URL bersih; parameter filter tambahan tetap didukung
- print katalog lewat halaman print browser
Single produk
Customer bisa:
- melihat galeri produk
- melihat harga promo
- memilih varian
- memilih opsi harga tambahan
- tambah ke keranjang
- tambah ke wishlist
- melihat produk terkait
- melihat rating dan ulasan
Keranjang
Customer bisa:
- ubah jumlah item
- hapus item
- lihat opsi item yang dipilih
- lanjut ke checkout
Checkout
Customer bisa:
- isi data penerima
- isi alamat
- pilih ongkir
- pilih metode pembayaran
- pakai kupon
- upload bukti transfer jika perlu
- melihat ringkasan dropship jika fitur diaktifkan di profil customer
Setelah checkout selesai, customer diarahkan ke halaman tracking order.
Tracking order
Halaman tracking dipakai untuk:
- melihat status order
- melihat detail item
- melihat resi
- melihat ringkasan pembayaran
Kupon
Jenis kupon yang didukung:
- diskon produk
- diskon ongkir
Aturan yang didukung:
- nominal
- persen
- minimal belanja
- batas penggunaan
- tanggal mulai
- tanggal kadaluarsa
Catatan:
- kupon produk menghitung minimal belanja dari subtotal produk
- kupon ongkir butuh ongkir yang sudah dipilih
Ulasan produk
Customer bisa memberi ulasan dari:
Profil Saya -> Pesanan
Syaratnya:
- order sudah selesai
- produk berasal dari order customer tersebut
- satu produk pada satu order hanya bisa direview sekali
Admin pesanan
Di halaman edit pesanan admin tersedia field:
- status pesanan
- nomor resi
- kurir
- layanan
- biaya ongkir
- catatan admin
Admin juga bisa:
- print invoice
- print data pengiriman
Catatan:
- print memakai halaman HTML print-friendly browser
- tidak memakai generator PDF server-side
Halaman dan shortcode
Shortcode halaman utama
| Shortcode | Fungsi |
|---|---|
[wp_store_shop] |
Render daftar produk berdasarkan query shortcode. |
[wp_store_catalog] |
Render katalog produk sederhana. |
[wp_store_shop_with_filters] |
Render shop dengan sidebar filter. |
[wp_store_single] |
Render halaman single produk. |
[wp_store_cart_page] |
Render halaman keranjang. |
[store_cart] |
Alias dari [wp_store_cart_page]. |
[wp_store_checkout] |
Render halaman checkout. |
[store_checkout] |
Alias dari [wp_store_checkout]. |
[wp_store_thanks] |
Render halaman terima kasih. |
[store_thanks] |
Alias dari [wp_store_thanks]. |
[wp_store_tracking] |
Render halaman tracking pesanan. |
[store_tracking] |
Alias dari [wp_store_tracking]. |
[wp_store_wishlist] |
Render halaman wishlist. |
Shortcode komponen produk
| Shortcode | Fungsi |
|---|---|
[wp_store_product_card] |
Render reusable product card. |
[wp_store_component] |
Render komponen produk reusable, misalnya title, price, rating, actions, description, related. |
[wp_store_product_info] |
Render tabel info/meta produk. |
[wp_store_info] |
Alias dari [wp_store_product_info]. |
[wp_store_product_meta] |
Alias dari [wp_store_product_info]. |
[wp_store_related] |
Render produk terkait. |
[wp_store_gallery] |
Render galeri produk. |
[wp_store_thumbnail] |
Render thumbnail produk. |
[wp_store_price] |
Render harga produk. |
[wp_store_add_to_cart] |
Tombol tambah ke keranjang. Untuk PHP/theme bisa memakai wp_store_add_to_cart_button(). |
[wp_store_buy_button] |
Alias dari [wp_store_add_to_cart]. |
[wp_store_detail] |
Link ke detail produk. |
[wp_store_add_to_wishlist] |
Tombol tambah ke wishlist. |
[wp_store_rating] |
Ringkasan bintang rating produk. |
[wp_store_review_count] |
Jumlah ulasan produk. |
[wp_store_product_reviews] |
Daftar ulasan produk. |
[wp_store_recently_viewed] |
Produk yang baru dilihat customer. |
[wp_store_products_carousel] |
Carousel produk. |
Shortcode komponen toko dan utilitas
| Shortcode | Fungsi |
|---|---|
[wp_store_cart] |
Shortcut atau offcanvas keranjang. Atribut: size untuk ukuran icon. |
[wp_store_link_profile] |
Link atau icon ke halaman profil customer. Atribut: size untuk ukuran foto profil. |
[wp_store_filters] |
Sidebar filter shop. |
[wp_store_shipping_checker] |
Cek ongkir di halaman publik. |
[wp_store_couriers] |
Render daftar / logo kurir aktif dari pengaturan toko. |
[wp_store_captcha] |
Komponen captcha. Memakai Velocity Addons jika aktif, fallback ke captcha bawaan VD Store jika tidak. |
[wp-store-captcha] |
Alias dari [wp_store_captcha]. |
[wp_store_categories] |
Daftar kategori produk. |
[wp_store_taxonomies_carousel] |
Carousel kategori atau brand dengan gambar taxonomy. |
[wp_store_sosmed] |
Daftar sosial media. |
[wp_store_contact] |
Informasi kontak toko. |
[wp_store_bank_accounts] |
Daftar rekening toko. |
Shortcode yang sering dipakai
Shop dengan filter
[wp_store_shop_with_filters per_page="12"]
Tombol tambah ke keranjang
[wp_store_add_to_cart id="123"]
Untuk tombol Beli Sekarang yang langsung memproses produk tersebut tanpa mengubah isi keranjang:
[wp_store_add_to_cart id="123" buy_now="yes" text="Beli Sekarang"]
Dengan tombol icon saja:
[wp_store_add_to_cart id="123" text="" class="btn btn-primary btn-sm"]
Kalau dipakai di file PHP theme atau template:
echo wp_store_add_to_cart_button(123, [
'text' => 'Beli Sekarang',
'class' => 'btn btn-primary btn-sm',
'buy_now' => 'yes',
]);
Fungsi ini memakai jalur yang sama dengan shortcode, jadi opsi produk, minimal order, dan modal pilihan tetap seragam.
Harga produk
[wp_store_price id="123"]
Tanpa wrapper luar dan harga sebagai span:
[wp_store_price id="123" wrapper="" tag="span"]
Alternatif yang lebih eksplisit:
[wp_store_price id="123" wrapper="none" tag="span"]
Galeri produk
[wp_store_gallery id="123"]
Produk terkait
[wp_store_related id="123" limit="4"]
Dokumentasi developer
Field tambahan checkout
Gunakan filter wp_store_checkout_fields dari plugin kustom atau child theme
untuk menambah field pada checkout VD Store dan Velocity Marketplace yang sudah
mendukung integrasi ini. Tersedia tipe text, textarea, email, tel,
select, dan checkbox, dengan pengaturan label, placeholder, wajib isi, dan urutan serta section.
Field otomatis dikirim, divalidasi di server, dan disimpan pada metadata pesanan
_store_order_checkout_fields. Nilainya dapat dilihat di box Field Tambahan
Checkout pada editor pesanan WordPress. Filter ini hanya mengatur field tambahan,
belum field bawaan checkout. Tidak ada field tambahan aktif secara default.
Contoh kode dan kontrak integrasi tersedia pada Field tambahan checkout.
Versi plugin: 1.4.14
Dokumen ini ditujukan untuk developer yang ingin:
- memahami struktur plugin
- mengetahui fungsi file-file penting
- mengetahui shortcode yang tersedia
- mengetahui kalau mau ubah fitur harus mulai dari file mana
1. Peran plugin
VD Store adalah core commerce.
Plugin ini menjadi pemilik utama untuk:
- produk
- cart
- wishlist
- checkout
- order
- kupon
- tracking order
- profil customer
- review produk
Kalau VD Marketplace aktif, addon itu seharusnya membaca data inti dari VD Store, bukan membuat sistem produk, order, atau kupon versi kedua.
2. File utama
vd-store.php
Isi dan fungsi:
- file bootstrap utama plugin
- mendefinisikan versi plugin
- membuat tabel database plugin
- memanggil class utama plugin
- menyediakan helper global seperti:
wps_icon()wps_icon_registry()wps_icon_render_registered()wps_discount_badge_html()wps_product_price_html()wp_store_add_to_cart_button()wp_store_render_product_card()wp_store_render_product_component()wp_store_render_product_info()wp_store_product_filter_args()wp_store_courier_labels()wp_store_bank_labels()wp_store_bank_logo()wp_store_order_status_labels()wp_store_order_statuses()wps_product_label_options()wps_product_label_badge_html()
Hook label yang tersedia:
wp_store_product_labelswp_store_product_labels_registrywp_store_product_label_optionswp_store_product_label_badge_html
Hook icon yang tersedia:
wp_store_iconswp_store_icon_registrywp_store_icon_html
Plugin.php
Isi dan fungsi:
- class utama yang menjalankan semua module
- mendaftarkan admin, frontend, assets, dan API
PostTypes.php
Isi dan fungsi:
- register post type
store_product - register post type
store_order - register post type
store_coupon - register taxonomy
store_product_cat - register taxonomy
brand
3. Struktur folder dan fungsi masing-masing
Folder src/Admin
Dipakai untuk area admin WordPress.
AdminMenu.php
Fungsi:
- menambah menu admin plugin
Settings.php
Fungsi:
- pengaturan admin plugin
ProductMetaBoxes.php
Fungsi:
- field produk di wp-admin
- simpan data produk dari editor admin
ProductColumns.php
Fungsi:
- kolom custom di daftar produk admin
OrderMetaBoxes.php
Fungsi:
- field status pesanan
- nomor resi
- kurir
- layanan
- biaya ongkir
- catatan admin
OrderColumns.php
Fungsi:
- kolom custom di daftar order admin
OrderActions.php
Fungsi:
- aksi tambahan terkait order di admin
OrderEmails.php
Fungsi:
- kirim email order dari admin/backend
OrderPrint.php
Fungsi:
- cetak invoice dan data pengiriman
- memakai halaman HTML print-friendly browser
- auto memanggil
window.print()saat halaman dibuka
CouponMetaBoxes.php
Fungsi:
- field kupon di wp-admin
CouponColumns.php
Fungsi:
- kolom custom daftar kupon
Folder src/Api
Dipakai untuk REST API.
ProductController.php
Fungsi:
- endpoint produk
- data produk untuk frontend
- print katalog browser lewat route
catalog/print
CartController.php
Fungsi:
- endpoint keranjang
- tambah item, ubah qty, hapus item
WishlistController.php
Fungsi:
- endpoint wishlist
CheckoutController.php
Fungsi:
- proses checkout
- validasi checkout
- simpan order
- simpan ringkasan dropship jika data itu dikirim frontend
CouponController.php
Fungsi:
- validasi kupon
- hitung diskon kupon
CustomerController.php
Fungsi:
- data customer profile
- data order customer
- submit review produk dari pesanan
- membaca data dropship yang tersimpan di profil customer
RajaOngkirController.php
Fungsi:
- endpoint ongkir dan wilayah
- mode
shipping_mode:normal= ongkir dihitung biasafree= ongkir tetap tampil, tetapi biaya dipaksa0off= kalkulasi ongkir dimatikan
- mode
offtetap kompatibel dengandisable_shippinglama freecocok untuk tampilan checkout dengan layanan Rp0
SettingsController.php
Fungsi:
- endpoint pengaturan toko
- simpan pengaturan shipping baru:
shipping_mode,collect_address,allow_cod disable_shippingdipertahankan sebagai alias lama untuk modeoff
CaptchaController.php
Fungsi:
- endpoint captcha gambar bawaan VD Store
- dipakai sebagai fallback jika captcha Velocity Addons tidak aktif
Frontend\Captcha.php
Fungsi:
- adapter captcha resmi VD Store
- otomatis memakai shortcode
[velocity_captcha]dari Velocity Addons jika fitur captcha Velocity Addons aktif - validasi Google reCAPTCHA dan image captcha Velocity Addons
- fallback ke captcha gambar bawaan VD Store
ToolsController.php
Fungsi:
- tools tambahan untuk maintenance atau debug
Folder src/Domain
Dipakai untuk business logic utama plugin.
Bagian produk
ProductSchema.php
Fungsi:
- sumber aturan field produk
- menentukan field apa saja yang ada
- menentukan field wajib atau tidak
- menentukan field hanya tampil untuk jenis produk tertentu
- menyediakan field label manual
_store_label
Kalau mau tambah field produk baru, biasanya mulai dari file ini.
ProductFields.php
Fungsi:
- render field produk berdasarkan schema
- menyiapkan atribut field untuk admin dan frontend
ProductMeta.php
Fungsi:
- helper baca dan tulis meta produk
- normalisasi key label produk
- baca label manual dari meta
_store_label
ProductData.php
Fungsi:
- memetakan data produk menjadi payload siap pakai
- menghitung harga efektif
- menghitung harga reguler, promo, dan harga dengan opsi tambahan
- membawa label produk ke payload frontend/API
Kalau ada bug harga, biasanya file ini yang harus dicek dulu.
ProductQuery.php
Fungsi:
- query produk
- normalisasi filter query
- apply filter ke
WP_Query - menyediakan opsi label manual untuk admin/filter
RelatedProducts.php
Fungsi:
- logika produk terkait
RecentlyViewed.php
Fungsi:
- logika produk yang baru dilihat customer
Bagian cart dan wishlist
CartService.php
Fungsi:
- logic utama cart
- simpan cart user atau guest
- hitung subtotal item
WishlistService.php
Fungsi:
- logic utama wishlist
Bagian order dan pembayaran
OrderService.php
Fungsi:
- membuat order
- menyimpan item order
- menyimpan total dan ringkasan order
PaymentService.php
Fungsi:
- orkestrasi pembayaran
PaymentMethodRegistry.php
Fungsi:
- daftar metode pembayaran yang aktif
DuitkuGateway.php
Fungsi:
- integrasi payment gateway Duitku
DuitkuCallbackListener.php
Fungsi:
- menangani callback pembayaran dari Duitku
Bagian review
ProductReviewRepository.php
Fungsi:
- simpan dan ambil review produk
- memastikan review terikat ke
product_id,order_id, danuser_id
RatingRenderer.php
Fungsi:
- render bintang rating
- helper tampilan rating produk
Folder src/Frontend
Dipakai untuk frontend rendering dan template.
Shortcode.php
Fungsi:
- register semua shortcode plugin
- render halaman dan komponen frontend
- override template archive dan single produk
Ini salah satu file paling penting di plugin.
Assets.php
Fungsi:
- enqueue CSS dan JS frontend
CustomerProfile.php
Fungsi:
- halaman profil customer
- tab profil, wishlist, pesanan, alamat, dan review
- ringkasan dropship customer jika fitur aktif
OrderPublicActions.php
Fungsi:
- aksi order yang bisa dipanggil dari halaman publik
Template.php
Fungsi:
- helper render template frontend
components/icons.php
Fungsi:
- fallback render icon bawaan jika registry addon tidak menyediakan icon tersebut
LoginBranding.php
Fungsi:
- branding halaman login jika dipakai
Folder templates/frontend
Dipakai untuk file tampilan frontend.
Template archive dan single
archive-store_product.php
Fungsi:
- template archive default produk
single-store_product.php
Fungsi:
- template single default produk
taxonomy-store_product_cat.php
Fungsi:
- template kategori produk
taxonomy-brand.php
Fungsi:
- template arsip brand dengan layout shop dan filter yang sama seperti kategori produk
- brand tetap taxonomy non-hierarkis; perbedaannya hanya pada model term, bukan layout frontend
Template halaman
shop.php
Fungsi:
- layout daftar produk
single-flex.php
Fungsi:
- layout single produk berbasis section dan komponen
checkout.php
Fungsi:
- layout checkout
cart.php
Fungsi:
- layout keranjang
tracking.php
Fungsi:
- layout tracking order
thanks.php
Fungsi:
- layout halaman terima kasih
related.php
Fungsi:
- tampilan produk terkait
recently-viewed.php
Fungsi:
- tampilan produk yang baru dilihat
catalog.php
Fungsi:
- tampilan katalog default
shipping-checker.php
Fungsi:
- tampilan cek ongkir
Template komponen
product-card.php
Fungsi:
- card produk default plugin
product-gallery.php
Fungsi:
- galeri gambar produk
product-reviews.php
Fungsi:
- daftar ulasan produk
filters.php
Fungsi:
- sidebar filter produk
- term taxonomy aktif dikunci di state filter tetapi tidak ditulis ulang sebagai parameter URL
- kategori/brand tambahan, harga, sort, dan pagination tetap disimpan di query string
- URL filter pada archive produk memakai canonical ke path archive tanpa query string
add-to-cart.php
Fungsi:
- tombol dan flow add to cart
- dipakai oleh shortcode
[wp_store_add_to_cart]dan helper PHPwp_store_add_to_cart_button() - menangani opsi produk, minimal order, dan data modal pilihan sebelum produk masuk keranjang
add-to-wishlist.php
Fungsi:
- tombol wishlist
cart-widget.php
Fungsi:
- shortcut atau offcanvas keranjang
wishlist-widget.php
Fungsi:
- tampilan wishlist
products-carousel.php
Fungsi:
- carousel produk
categories-list.php
Fungsi:
- daftar kategori
captcha.php
Fungsi:
- komponen captcha internal VD Store
- jangan dipanggil langsung untuk halaman publik baru; gunakan
\WpStore\Frontend\Captcha::render()atau shortcode[wp_store_captcha]supaya otomatis mengikuti Velocity Addons jika aktif
4. Kontrak data penting
Meta produk
Meta canonical produk:
_store_product_type_store_priceboleh kosong. Produk tanpa harga, tanpa berat (produk fisik), atau stok0tampil sebagai katalog/inquiry: tombol Beli Sekarang disembunyikan dan tombol keranjang menjadiHubungi Adminyang membuka WhatsApp toko (Pengaturan → WhatsApp). Stok kosong berarti tidak dibatasi._store_sale_price_store_flashsale_until_store_digital_file_store_sku_store_stock_store_min_order_store_weight_kgboleh kosong. Produk fisik tanpa berat tidak bisa dibeli karena ongkir tidak dapat dihitung.- mode
freetetap memakai ongkir, tetapi nilai layanan menjadi0 - mode
offtidak menghitung ongkir, namun alamat, provinsi, kota, dan kecamatan masih dikumpulkan jikacollect_addressaktif _store_gallery_ids_store_option_name_store_options_store_option2_name_store_advanced_options_store_sold_count_store_review_count_store_rating_average
Meta kupon
Meta canonical kupon:
_store_coupon_code_store_coupon_scope_store_coupon_type_store_coupon_value_store_coupon_min_purchase_store_coupon_usage_limit_store_coupon_usage_count_store_coupon_starts_at_store_coupon_expires_at
Meta order
Meta order yang sering dipakai:
_store_order_status_store_order_shipping_courier_store_order_shipping_service_store_order_shipping_costbisa0saat modefreeatau order tanpa ongkir_store_order_receipt_no_store_order_admin_note_store_order_coupon_code_store_order_coupon_scope_store_order_discount_total
5. Aturan inti yang harus dipahami
Produk fisik
- berat wajib
- ikut hitung ongkir
Produk digital
- berat tidak wajib
- file digital wajib
- cart digital-only tidak boleh memaksa shipping
- alamat dan dropdown lokasi bisa tetap dikumpulkan jika setting
collect_addressaktif, tetapi bukan syarat ongkir
Aturan shipping
shipping_mode = normalmenghitung ongkir normalshipping_mode = freetetap menampilkan layanan kirim dengan biaya0shipping_mode = offmematikan kalkulasi ongkircollect_addresshanya berpengaruh pada modefreedanoff; modenormalselalu meminta alamat untuk produk fisikcollect_addressdanallow_coddefault aktif jika belum ada nilai tersimpanallow_codmengontrol COD, dan otomatis false saat modeoff
Pilihan harga
- meta
_store_option_price_modemenentukan cara menghitung nilai pada_store_advanced_options - Tambahan Harga (
adjustment) menghitung harga akhir = harga produk + angka pilihan - Harga Tetap (
absolute) memakai angka pilihan sebagai harga akhir - produk lama tanpa meta mode otomatis memakai
adjustment
Contoh Tambahan Harga dengan harga produk Rp100.000:
Small=0
Large=20000
Contoh Harga Tetap:
Small=100000
Large=120000
Harga promo
- filtering
- sorting
- cart
- checkout
- order
semuanya harus membaca harga efektif, bukan selalu harga reguler.
Review produk
- review harus terikat ke:
product_idorder_iduser_id
- tidak memakai comment WordPress biasa
6. Shortcode lengkap
Semua shortcode di bawah didaftarkan di Shortcode.php.
Halaman
| Shortcode | Method | Template utama | Fungsi |
|---|---|---|---|
[wp_store_shop] |
render_shop() |
shop.php |
Daftar produk berdasarkan query shortcode. |
[wp_store_catalog] |
render_catalog() |
catalog.php |
Katalog produk sederhana. |
[wp_store_shop_with_filters] |
render_shop_with_filters() |
filters.php + shop.php |
Shop dengan sidebar filter. |
[wp_store_single] |
render_single() |
single-flex.php |
Single produk berbasis section dan komponen. |
[wp_store_cart_page] |
render_cart_page() |
cart.php |
Halaman keranjang. |
[store_cart] |
render_cart_page() |
cart.php |
Alias cart page. |
[wp_store_checkout] |
render_checkout() |
checkout.php |
Halaman checkout. |
[store_checkout] |
render_checkout() |
checkout.php |
Alias checkout. |
[wp_store_thanks] |
render_thanks() |
thanks.php |
Halaman terima kasih. |
[store_thanks] |
render_thanks() |
thanks.php |
Alias thanks. |
[wp_store_tracking] |
render_tracking() |
tracking.php |
Tracking pesanan. |
[store_tracking] |
render_tracking() |
tracking.php |
Alias tracking. |
[wp_store_wishlist] |
render_wishlist() |
wishlist-widget.php |
Halaman wishlist. |
Komponen produk
| Shortcode | Method | Template utama | Fungsi |
|---|---|---|---|
[wp_store_product_card] |
render_product_card() |
product-card.php |
Render reusable product card. |
[wp_store_component] |
render_component() |
ProductRenderer.php |
Render komponen produk reusable berdasarkan name atau component. |
[wp_store_product_info] |
render_product_info() |
ProductRenderer::product_info() |
Tabel info/meta produk. |
[wp_store_info] |
render_product_info() |
ProductRenderer::product_info() |
Alias info produk. |
[wp_store_product_meta] |
render_product_info() |
ProductRenderer::product_info() |
Alias meta produk. |
[wp_store_related] |
render_related() |
related.php |
Produk terkait. |
[wp_store_gallery] |
render_gallery() |
product-gallery.php |
Galeri produk. |
[wp_store_thumbnail] |
render_thumbnail() |
method langsung | Thumbnail produk. |
[wp_store_price] |
render_price() |
helper wps_product_price_html() |
Harga produk. |
[wp_store_add_to_cart] |
render_add_to_cart() |
add-to-cart.php |
Tombol add to cart. Atribut teks tombol memakai text. Untuk file PHP theme/template bisa memakai wp_store_add_to_cart_button(). |
[wp_store_buy_button] |
render_add_to_cart() |
add-to-cart.php |
Alias tombol beli/add to cart. |
[wp_store_detail] |
render_detail() |
method langsung | Link detail produk. |
[wp_store_add_to_wishlist] |
render_add_to_wishlist() |
add-to-wishlist.php |
Tombol wishlist. |
[wp_store_rating] |
render_rating() |
RatingRenderer.php |
Bintang rating produk. |
[wp_store_review_count] |
render_review_count() |
method langsung | Jumlah ulasan produk. |
[wp_store_product_reviews] |
render_product_reviews() |
product-reviews.php |
Daftar ulasan produk. |
[wp_store_recently_viewed] |
render_recently_viewed() |
recently-viewed.php |
Produk yang baru dilihat. |
[wp_store_products_carousel] |
render_products_carousel() |
products-carousel.php |
Carousel produk. |
Komponen toko dan utilitas
| Shortcode | Method | Template utama | Fungsi |
|---|---|---|---|
[wp_store_cart] |
render_cart_widget() |
cart-widget.php |
Shortcut atau offcanvas keranjang. Atribut: size untuk ukuran icon. |
[wp_store_link_profile] |
render_link_profile() |
method langsung | Link atau icon profil customer. Atribut: size untuk ukuran foto profil. |
[wp_store_filters] |
render_filters() |
filters.php |
Sidebar filter shop. |
[wp_store_shipping_checker] |
render_shipping_checker() |
shipping-checker.php |
Cek ongkir. |
[wp_store_categories] |
render_categories() |
categories-list.php |
Daftar kategori. |
[wp_store_taxonomies_carousel] |
render_taxonomies_carousel() |
taxonomy-carousel.php |
Carousel visual kategori atau brand dengan gambar taxonomy. |
[wp_store_sosmed] |
render_sosmed() |
method langsung | Sosial media toko. |
[wp_store_contact] |
render_contact() |
method langsung | Kontak toko. |
[wp_store_bank_accounts] |
render_bank_accounts() |
method langsung | Daftar rekening toko. |
[wp_store_couriers] |
render_couriers() |
method langsung | Logo kurir aktif. |
[wp_store_captcha] |
render_captcha() |
captcha.php |
Captcha. |
[wp-store-captcha] |
render_captcha() |
captcha.php |
Alias captcha. |
Contoh atribut shortcode
Default di bawah mengikuti shortcode_atts() di Shortcode.php. Nilai id="123" bisa dikosongkan pada konteks loop produk karena sistem akan mencoba membaca produk aktif.
| Shortcode | Contoh atribut utama | Catatan |
|---|---|---|
[wp_store_shop] |
[wp_store_shop per_page="12"] |
per_page dibatasi maksimal 50. |
[wp_store_catalog] |
[wp_store_catalog] |
Tidak punya atribut shortcode khusus. |
[wp_store_shop_with_filters] |
[wp_store_shop_with_filters per_page="12"] |
Filter bekerja setelah tombol Terapkan diklik. Atribut filter_mode lama tetap kompatibel sebagai submit GET biasa. |
[wp_store_filters] |
[wp_store_filters] |
Filter bekerja setelah tombol Terapkan diklik. Atribut mode lama tetap kompatibel sebagai submit GET biasa. |
[wp_store_single] |
[wp_store_single id="123" hide="rating,related"] |
hide berisi section single produk yang ingin disembunyikan. |
[wp_store_cart_page] |
[wp_store_cart_page] |
Alias: [store_cart]. |
[wp_store_checkout] |
[wp_store_checkout] |
Alias: [store_checkout]. |
[wp_store_thanks] |
[wp_store_thanks] |
Alias: [store_thanks], order dibaca dari query ?order=.... |
[wp_store_tracking] |
[wp_store_tracking] |
Alias: [store_tracking], label form bisa diubah lewat filter PHP. |
[wp_store_wishlist] |
[wp_store_wishlist] |
Tidak punya atribut shortcode khusus. |
[wp_store_product_card] |
[wp_store_product_card id="123" context="shortcode" variant="default" image_size="medium" width="300" height="300" crop="true" class="custom-card"] |
Render card produk reusable. |
[wp_store_component] |
[wp_store_component id="123" name="price" component=""] |
Pakai name atau component; contoh: price, rating, gallery. |
[wp_store_product_info] |
[wp_store_product_info id="123"] |
Alias: [wp_store_info] dan [wp_store_product_meta]. |
[wp_store_related] |
[wp_store_related id="123" per_page="4"] |
per_page dibatasi maksimal 12. |
[wp_store_gallery] |
[wp_store_gallery id="123"] |
Galeri membaca featured image dan gallery meta produk. |
[wp_store_thumbnail] |
[wp_store_thumbnail id="123" width="300" height="300" crop="true" upscale="true" alt="" hover="change" label="true"] |
hover="change" memakai gambar galeri pertama sebagai hover. |
[wp_store_price] |
[wp_store_price id="123" countdown="false" wrapper="" tag="" class=""] |
wrapper="" bisa dipakai untuk output tanpa wrapper luar. |
[wp_store_add_to_cart] |
[wp_store_add_to_cart id="123" text="Beli" label="+" class="wps-btn wps-btn-primary" qty="0"] |
text mengatur teks tombol; text="" membuat tombol icon-only; alias: [wp_store_buy_button]. |
[wp_store_detail] |
[wp_store_detail id="123" text="Detail" size="" class="wps-btn wps-btn-secondary wps-w-full"] |
size="sm" memakai tombol kecil. |
[wp_store_add_to_wishlist] |
[wp_store_add_to_wishlist id="123" size="" label_add="Wishlist" label_remove="Hapus" icon_only="0"] |
icon_only="1" menyembunyikan teks. |
[wp_store_rating] |
[wp_store_rating id="123" size="16" show_value="true" show_count="true" class="" count_text="ulasan"] |
Mengambil ringkasan review produk. |
[wp_store_review_count] |
[wp_store_review_count id="123" class="" suffix="ulasan"] |
Output jumlah review. |
[wp_store_product_reviews] |
[wp_store_product_reviews id="123" limit="20"] |
limit dibatasi 1 sampai 100. |
[wp_store_recently_viewed] |
[wp_store_recently_viewed limit="4" exclude_current="true" title="Produk yang Baru Dilihat"] |
Menampilkan produk yang pernah dilihat customer. |
[wp_store_products_carousel] |
[wp_store_products_carousel label="" per_page="10" per_row="1" img_width="200" img_height="300" crop="true" autoplay="0" pause_on_hover="true" wrap_around="true" page_dots="false" prev_next_buttons="true" lazy_load="0" cell_align="center" draggable="true" contain="true"] |
per_page dibatasi maksimal 20. |
[wp_store_cart] |
[wp_store_cart size="16"] |
size mengatur ukuran icon cart. |
[wp_store_link_profile] |
[wp_store_link_profile size="32"] |
size dibatasi 16 sampai 160 px. |
[wp_store_shipping_checker] |
[wp_store_shipping_checker] |
Tidak punya atribut shortcode khusus; konfigurasi ongkir dari setting toko. |
[wp_store_categories] |
[wp_store_categories hide_empty="0" orderby="name" order="ASC"] |
Membaca taxonomy store_product_cat. |
[wp_store_taxonomies_carousel] |
[wp_store_taxonomies_carousel taxonomy="store_product_cat" columns="10" rows="2" limit="40" image_size="large" parent="" hide_empty="0" orderby="name" order="ASC"] |
taxonomy default store_product_cat; gunakan taxonomy="brand" untuk brand. image_size default large dan dapat memakai ukuran gambar WordPress lain, misalnya medium. parent kosong menampilkan semua term, parent="0" hanya kategori tingkat atas, dan parent="123" hanya anak langsung term ID 123. Gambar diatur pada edit kategori/brand. limit="0" membaca semua term. |
[wp_store_sosmed] |
[wp_store_sosmed facebook="https://facebook.com/..." instagram="https://instagram.com/..." twitter="https://x.com/..." youtube="https://youtube.com/..." caption-facebook="Find us on"] |
Atribut URL sosial media opsional; caption per platform memakai prefix caption-. |
[wp_store_contact] |
[wp_store_contact style="true"] |
style="false" memakai gaya link sederhana. |
[wp_store_bank_accounts] |
[wp_store_bank_accounts] |
Membaca daftar rekening dari pengaturan toko. |
[wp_store_couriers] |
[wp_store_couriers height="30" gap="10" class=""] |
Menampilkan logo kurir aktif dari pengaturan pengiriman. |
[wp_store_captcha] |
[wp_store_captcha target-button="#submit-order" target_button=""] |
Alias shortcode: [wp-store-captcha]; target-button dan target_button sama-sama didukung. |
Gambar kategori dan brand dikelola dari halaman taxonomy VD Store. Gambar dapat diubah melalui form tambah/edit maupun Quick Edit; term tanpa gambar memakai assets/frontend/img/empty.png pada kolom admin.
7. Kalau mau edit fitur tertentu, mulai dari file ini
Mau ubah field produk
Mulai dari:
ProductSchema.phpProductFields.php
Kalau yang diubah khusus label manual:
vd-store.phpProductMeta.phpProductQuery.php
Kalau field tampil di admin:
ProductMetaBoxes.php
Mau ubah harga
Mulai dari:
ProductData.php
Kalau mau ubah HTML harga:
vd-store.php- helper
wps_product_price_html()
- helper
Mau ubah card produk
Mulai dari:
product-card.php
Kalau data card kurang:
Shortcode.php- method
card_item_from_product()
- method
Mau ubah galeri produk
Mulai dari:
product-gallery.phpstore.jsstyle.css
Mau ubah archive shop dan filter
Mulai dari:
Shortcode.phprender_shop()render_filters()render_shop_with_filters()adjust_archive_query()
filters.phpshop.phpstyle.css
Mau ubah produk terkait
Mulai dari:
RelatedProducts.phpShortcode.phprender_related()
related.php
Mau ubah cart
Mulai dari:
CartService.phpCartController.phpcart.phpcart-widget.php
Mau ubah checkout
Mulai dari:
CheckoutController.phpcheckout.phpOrderService.php
Mau ubah kupon
Mulai dari:
CouponController.phpCouponMetaBoxes.php
Mau ubah status order dan resi admin
Mulai dari:
OrderMetaBoxes.phpOrderColumns.phpOrderActions.php
Mau ubah review produk
Mulai dari:
ProductReviewRepository.phpCustomerController.phpCustomerProfile.phpproduct-reviews.php
Mau ubah profil customer
Mulai dari:
CustomerProfile.phpCustomerController.php
Mau ubah tracking order
Mulai dari:
tracking.phpOrderPublicActions.php
Mau ubah asset frontend
Mulai dari:
Assets.phpstyle.cssstore.js
Mau tambah atau ubah icon
Mulai dari:
vd-store.php- helper
wps_icon() - registry filter
wp_store_icons - filter hasil akhir
wp_store_icon_html
- helper
templates/frontend/components/icons.php- fallback icon bawaan
8. Method penting di Shortcode.php
Kalau ingin cepat memahami alur frontend, fokus dulu ke method ini:
Query dan shop
render_shop()render_filters()render_shop_with_filters()adjust_archive_query()
Single produk
render_single()render_gallery()render_related()render_product_reviews()
Card dan komponen produk
card_item_from_product()render_thumbnail()render_price()render_add_to_cart()render_add_to_wishlist()
Cart dan checkout
render_cart_widget()render_cart_page()filter_cart_page_content()render_checkout()render_tracking()render_thanks()
Template dan URL
override_archive_template()redirect_page_conflict()
9. Area sensitif yang wajib dites setelah diubah
Kalau mengubah area ini, tes ulang end-to-end:
Produk
- produk fisik
- produk digital
- harga promo
- opsi harga tambahan
- gallery produk
Shop
- filter harga
- sort harga
- reset filter
- archive produk
- produk terkait
Cart dan checkout
- add to cart
- update qty
- hapus item
- cart digital-only
- cart campuran fisik + digital
- pilih ongkir
- mode
freemenampilkan opsi kirim dengan biayaRp0 - mode
offmenyembunyikan kalkulasi ongkir tetapi tetap bisa menyimpan alamat dan dropdown lokasi jikacollect_addressaktif - checkout selesai
Kupon
- kupon produk
- kupon ongkir
- minimal belanja
- batas penggunaan
- tanggal aktif dan kadaluarsa
Order
- status order
- nomor resi
- tracking publik
- upload bukti transfer
Review
- submit review dari pesanan
- review ganda ditolak
- review tampil di single produk
10. Prinsip pengembangan yang sekarang dipakai
Produk
- field produk diatur dari schema
- admin dan frontend membaca aturan yang sama
- validasi server tetap jadi sumber kebenaran
Harga
- angka backend harus membaca harga efektif
- helper tampilan harga lewat
wps_product_price_html() - kalau perlu teks biasa, pakai
wrapper_tag => ''danprice_tag => 'span' - produk tanpa harga tidak bisa dibeli
- produk fisik tanpa berat tidak bisa dibeli
Review
- review tetap custom data
- jangan pindah ke comment WordPress biasa
Integrasi addon
- addon harus membaca kontrak canonical
VD Store - jangan buat meta produk, order, atau kupon versi kedua kalau tidak benar-benar perlu
11. Kontrak override tampilan dan query
Template override
Addon klien bisa override template tanpa mengubah file vd-store:
add_filter('wp_store_template_candidates', function ($paths, $template) {
$paths[] = plugin_dir_path(__FILE__) . 'templates/vd-store/' . $template . '.php';
return $paths;
}, 10, 2);
Template default tetap menjadi fallback terakhir dari templates/frontend.
Renderer produk
Gunakan renderer resmi supaya archive, related, carousel, shortcode, dan Beaver Builder memakai output yang sama:
echo wp_store_render_product_card($product_id, [
'context' => 'archive',
'variant' => 'default',
]);
echo wp_store_render_product_component('price', $product_id);
echo wp_store_render_product_component('rating', $product_id);
echo wp_store_product_info($product_id);
echo wp_store_render_single_product($product_id, [
'hide' => 'rating,related',
]);
Shortcode yang tersedia:
[wp_store_product_card id="123"]
[wp_store_product_card id="123" width="400" height="400"]
[wp_store_component id="123" name="rating"]
[wp_store_product_info id="123"]
[wp_store_info id="123"]
[wp_store_single id="123" hide="rating,related"]
Section single produk bisa dikurangi atau diurutkan dari addon:
add_filter('wp_store_single_product_sections', function ($sections, $produThis README is longer than the copy stored here. Read the rest on GitHub →
Releases
24 releases. Each count is every asset in that release; expand a row for the breakdown.
Active-site estimate ≈20 comes from the v1.4.14 cohort. Method.