ode_atts( array( 'order_id' => '', 'link_text' => '', 'id' => '', 'class' => 'wpo_wcpdf_document_link', 'document_type' => 'invoice', ), $atts ); $is_document_type_valid = false; $documents = WPO_WCPDF()->documents->get_documents(); foreach ( $documents as $document ) { if ( $document->get_type() === $values['document_type'] ) { $is_document_type_valid = true; if ( ! empty( $values['link_text'] ) ) { $link_text = $values['link_text']; } else { $link_text = sprintf( /* translators: %s: Document type */ __( 'Download %s (PDF)', 'woocommerce-pdf-invoices-packing-slips' ), wp_kses_post( $document->get_type() ) ); } break; } } if ( ! $is_document_type_valid ) { return; } // Get $order if ( empty( $values['order_id'] ) ) { if ( is_checkout() && is_wc_endpoint_url( 'order-received' ) && isset( $wp->query_vars['order-received'] ) ) { $order = wc_get_order( $wp->query_vars['order-received'] ); } elseif ( is_account_page() && is_wc_endpoint_url( 'view-order' ) && isset( $wp->query_vars['view-order'] ) ) { $order = wc_get_order( $wp->query_vars['view-order'] ); } } else { $order = wc_get_order( $values['order_id'] ); } if ( empty( $order ) || ! is_object( $order ) ) { return; } $document = wcpdf_get_document( $values['document_type'], $order ); if ( ! $document || ! $document->is_allowed() ) { return; } $pdf_url = WPO_WCPDF()->endpoint->get_document_link( $order, $values['document_type'], [ 'shortcode' => 'true' ] ); if ( 'wcpdf_document_link' === $shortcode_tag ) { return esc_url( $pdf_url ); } return sprintf( '

%s

', ( ! empty( $values['id'] ) ? 'id="' . esc_attr( $values['id'] ) . '"' : '' ), esc_attr( $values['class'] ), esc_url( $pdf_url ), esc_html( $link_text ) ); } /** * Document objects are created in order to check for existence and retrieve data, * but we don't want to store the settings for uninitialized documents. * Only use in frontend/backed (page requests), otherwise settings will never be stored! */ public function disable_storing_document_settings() { add_filter( 'wpo_wcpdf_document_store_settings', array( $this, 'return_false' ), 9999 ); } public function restore_storing_document_settings() { remove_filter( 'wpo_wcpdf_document_store_settings', array( $this, 'return_false' ), 9999 ); } public function return_false(){ return false; } } endif; // class_exists