ode() ); return new WP_Error( 'woocommerce_rest_' . $error_code, __( 'Product review field exceeds maximum length allowed.', 'woocommerce' ), array( 'status' => 400 ) ); } $updated = wp_update_comment( wp_slash( (array) $prepared_args ) ); if ( false === $updated ) { return new WP_Error( 'woocommerce_rest_comment_failed_edit', __( 'Updating review failed.', 'woocommerce' ), array( 'status' => 500 ) ); } if ( isset( $request['status'] ) ) { $this->handle_status_param( $request['status'], $id ); } } if ( ! empty( $request['rating'] ) ) { update_comment_meta( $id, 'rating', $request['rating'] ); } if ( isset( $request['verified'] ) && ! empty( $request['verified'] ) ) { update_comment_meta( $id, 'verified', $request['verified'] ); } $review = get_comment( $id ); /** This action is documented in includes/api/class-wc-rest-product-reviews-controller.php */ do_action( 'woocommerce_rest_insert_product_review', $review, $request, false ); $fields_update = $this->update_additional_fields_for_object( $review, $request ); if ( is_wp_error( $fields_update ) ) { return $fields_update; } $request->set_param( 'context', 'edit' ); $response = $this->prepare_item_for_response( $review, $request ); return rest_ensure_response( $response ); } /** * Deletes a review. * * @param WP_REST_Request $request Full details about the request. * @return WP_Error|WP_REST_Response Response object on success, or error object on failure. */ public function delete_item( $request ) { $review = $this->get_review( $request['id'] ); if ( is_wp_error( $review ) ) { return $review; } $force = isset( $request['force'] ) ? (bool) $request['force'] : false; /** * Filters whether a review can be trashed. * * Return false to disable trash support for the post. * * @since 3.5.0 * @param bool $supports_trash Whether the post type support trashing. * @param WP_Comment $review The review object being considered for trashing support. */ $supports_trash = apply_filters( 'woocommerce_rest_product_review_trashable', ( EMPTY_TRASH_DAYS > 0 ), $review ); $request->set_param( 'context', 'edit' ); if ( $force ) { $previous = $this->prepare_item_for_response( $review, $request ); $result = wp_delete_comment( $review->comment_ID, true ); $response = new WP_REST_Response(); $response->set_data( array( 'deleted' => true, 'previous' => $previous->get_data(), ) ); } else { // If this type doesn't support trashing, error out. if ( ! $supports_trash ) { /* translators: %s: force=true */ return new WP_Error( 'woocommerce_rest_trash_not_supported', sprintf( __( "The object does not support trashing. Set '%s' to delete.", 'woocommerce' ), 'force=true' ), array( 'status' => 501 ) ); } if ( 'trash' === $review->comment_approved ) { return new WP_Error( 'woocommerce_rest_already_trashed', __( 'The object has already been trashed.', 'woocommerce' ), array( 'status' => 410 ) ); } $result = wp_trash_comment( $review->comment_ID ); $review = get_comment( $review->comment_ID ); $response = $this->prepare_item_for_response( $review, $request ); } if ( ! $result ) { return new WP_Error( 'woocommerce_rest_cannot_delete', __( 'The object cannot be deleted.', 'woocommerce' ), array( 'status' => 500 ) ); } /** * Fires after a review is deleted via the REST API. * * @param WP_Comment $review The deleted review data. * @param WP_REST_Response $response The response returned from the API. * @param WP_REST_Request $request The request sent to the API. */ do_action( 'woocommerce_rest_delete_review', $revi Stylish Metal Railings for Your Outdoor Space
Design Fabricate install

Products

Transform Your Outdoor Space

Mulhollands range of modern and traditional wrought iron style metal railings will create a wonderful look to any outdoor location.

Quality Metal Railings for Any Property

Elegant and Practical Metal Railings

Our metal railings are the ideal solution for a range of purposes including adding height to boundary walls or defining outdoor spaces. And with a competitive price, they are the perfect choice for those looking for both practicality and style.

Wide Range of Applications

Affordable Metal Railings

Choose from a variety of designs and finishes at competitive prices.

Modern Designs

Sleek and contemporary options for a stylish look.

Traditional Styles

Bring a touch of elegance to your property with our traditional railing options.

Durable Finishes

Choose from finishes that can withstand any weather conditions and stay looking like new.

Over 25 years of providing quality metal fabrication products and services to satisfied customers.

At Mulhollands Contracts, our mission is to exceed our customers’ expectations by providing them with high-quality metal fabrication products and services for over 25 years.

Years of Experience

25

Satisfied Customers

100K

Number of Products

500

Services Offered

10

What Our Customers Say

Hear directly from our satisfied clients who have experienced the quality and style of our metal railings.

Trusted by a Variety of Clients

Our iron and steel manufacturing services have earned the trust of a diverse range of clients in the industry.

Get In Touch With Us Today

en_USEnglish