WordPress can support a controlled customer-review workflow without relying on public WooCommerce product reviews. In this case, the original request evolved from product-specific reviews into company-wide testimonials that only authenticated customers could submit. The final solution used Advanced Custom Fields, Gravity Forms, the Advanced Post Creation Add-On, Elementor, and WPCode to create draft review posts for administrator moderation before anything appeared publicly.
Issue background
A WooCommerce site wanted to collect authentic customer feedback to build trust with prospective buyers. Early discussions focused on the Customer Reviews for WooCommerce plugin and product-level reviews from verified owners.
During testing, the requirements changed. The desired review was not about an individual product. It was a general review of the customer’s experience with the company.
The final workflow needed to:
- Allow only logged-in customers to submit a review
- Collect a star rating and written feedback
- Create each submission as an unpublished draft
- Notify an administrator when a review was submitted
- Require manual approval before publication
- Display published reviews in a consistent grid
- Provide a visible footer link and a logged-in-only “Leave a review” button
Diagnosis
WooCommerce’s native product-review system was initially tested, but the review tab did not appear even after reviews were enabled in WooCommerce, WordPress Discussion settings, and the individual product.
The investigation found that a WPCode snippet was disabling comments, which also prevented WooCommerce product reviews from rendering. Disabling that snippet on staging restored the product-review tab.
However, once the requirement shifted to company-level reviews, WooCommerce product comments were no longer the right data model. Product reviews are attached to individual products, while the site needed independent testimonials with their own moderation and display workflow.
A custom post type was therefore a better fit. It separated company reviews from products and gave administrators normal WordPress publishing controls.
Resolution steps
- Confirm the review type. Decide whether reviews are attached to WooCommerce products or represent the customer’s overall experience with the company. This determines whether native product reviews or a custom testimonial system is appropriate.
- Audit code that disables comments. Review WPCode, theme functions, plugins, and filters for settings that disable WordPress comments or WooCommerce reviews. Product reviews depend on the underlying comment system.
- Create a custom review post type. Use Advanced Custom Fields to register a Customer Reviews post type. Configure it so administrators can review, edit, publish, and archive submissions through the WordPress dashboard.
- Create the review fields. Add an ACF field group for review metadata. In this implementation, the custom fields included a star-rating radio button alongside the review content.
- Build the submission form. Create a Gravity Form that collects the required reviewer details, rating, and written feedback.
- Install Advanced Post Creation. Use the Gravity Forms Advanced Post Creation Add-On to convert each valid form submission into a new Customer Reviews post.
- Set new reviews to Draft. Configure the post-creation feed so submissions never publish automatically. This creates a moderation checkpoint before public display.
- Notify administrators. Add a Gravity Forms notification so the responsible team knows when a new review is awaiting approval.
- Restrict the form to authenticated users. Show the review form and its call-to-action only to logged-in customers. Enforce the restriction on the server as well as in the page layout.
- Create the review display template. Build an Elementor Loop Item for published Customer Reviews and use it on a dedicated reviews page.
- Format the review grid. Display three reviews per row and limit the initial excerpt so cards maintain a consistent height. Add a “Read more” control to reveal longer feedback.
- Add supporting shortcode logic. Use WPCode PHP and JavaScript snippets for the content output, excerpt expansion, and any behavior not available directly through Elementor.
- Add navigation and calls to action. Add a Customer Reviews link to the footer and a “Leave a review” button that appears only for logged-in users.
- Test the moderation workflow. Submit a review as an authenticated customer, confirm that it creates a draft, verify the administrator notification, publish it manually, and confirm that it appears in the public grid.
Hiding the form with Elementor conditions is useful for presentation, but access control should not rely only on frontend visibility. The submission handler should also verify that the user is authenticated and authorized.
Final outcome
The completed system allowed logged-in customers to submit company-level reviews through Gravity Forms. Each submission created a new Customer Reviews post in Draft status, and administrators received a notification so they could review and publish appropriate feedback.
Published reviews appeared on a dedicated Elementor page in a three-column grid with consistent excerpts and expandable content. A footer navigation link made the review page easy to find, while the “Leave a review” button remained visible only to authenticated users.
The key lesson is that WooCommerce product reviews and company testimonials solve different problems. When feedback is not tied to a particular product, a custom post type with Gravity Forms and manual publishing controls provides a cleaner and more flexible moderation workflow.
For help building moderated WordPress review systems, integrating Gravity Forms with custom post types, or creating Elementor testimonial layouts, contact Freshy.