Ändern Sie die Methode einer class von der function function.php

Ich möchte die Ausgabe einer Methode innerhalb der class eines Plugins von der child function.php ändern, ohne die Datei des Plugins zu ändern. Die Ausgabe, die ich ändern möchte, ist, dass anstelle einer gemeinsamen a href, die Vorlage Schaltflächenarray verwendet. Die Sache ist, dass die Ausgabe der Methode, die Sie erhalten, ein Shortcode ist (dieser Shortcode, den Sie in jede beliebige Vorlage einfügen können). Ich weiß nicht, wie ich diese Methode von der child function.php ändern kann. Ich habe diese Plugin-Datei geändert, es funktioniert, aber es bedeutet, dass ich das Plugin nicht aktualisieren kann, ohne die neue Schaltfläche zu verlieren.

echo do_shortcode( '[bewpi-download-invoice title="Download (PDF) Invoice {formatted_invoice_number}" order_id="' . $order->id . '"]' ); 

Hier ist die Methode in der class be-woocommerce-pdf-request.php

 public function download_invoice_shortcode( $atts ) { if ( ! isset( $atts['order_id'] ) || 0 === intval( $atts['order_id'] ) ) { return; } // by default order status should be Processing or Completed. $order = wc_get_order( $atts['order_id'] ); if ( ! $order->is_paid() ) { return; } if ( ! BEWPI_Invoice::exists( $order->id ) ) { return; } $url = add_query_arg( array( 'bewpi_action' => 'view', 'post' => $order->id, 'nonce' => wp_create_nonce( 'view' ), ) ); $invoice = new BEWPI_Invoice( $order->id ); $tags = array( '{formatted_invoice_number}' => $invoice->get_formatted_number(), '{order_number}' => $order->id, '{formatted_invoice_date}' => $invoice->get_formatted_invoice_date(), '{formatted_order_date}' => $invoice->get_formatted_order_date(), ); // find and replace placeholders. $title = str_replace( array_keys( $tags ), array_values( $tags ), $atts['title'] ); // MOD OF THE PLUGIN thegem_button(array( 'tag' => 'a', 'href' => esc_attr( $url ), 'text' => esc_html__($title, 'thegem' ), 'style' => 'outline', 'size' => 'medium', 'extra_class' => 'checkout-exit', 'attributes' => array( 'value' => esc_attr__( $title, 'thegem' ), ) ), true); // ORIGINAL OUTPUT // printf( '%2$s', esc_attr( $url ), esc_html( $title ) ); } 

MOD OF THE PLUGIN ist der neue Code, den ich hinzugefügt habe. Die ursprüngliche Ausgabe habe ich zum kommentieren kommentiert. Jeder Vorschlag ist natürlich willkommen. Danke im Voraus

Solutions Collecting From Web of "Ändern Sie die Methode einer class von der function function.php"

In meinem Fall denke ich, dass dies eine direkte function des Shortcodes ist. Sie können Ihren eigenen Shortcode erstellen und ihn verwenden, um anzuzeigen, was Sie wollen. Sie können diesen Hack versuchen, es wird Ihnen helfen,

 add_shortcode( 'custom-bewpi-download-invoice', 'print_invoice_func'); function print_invoice_func( $atts ) { if ( ! isset( $atts['order_id'] ) || 0 === intval( $atts['order_id'] ) ) { return; } // by default order status should be Processing or Completed. $order = wc_get_order( $atts['order_id'] ); if ( ! $order->is_paid() ) { return; } if ( ! BEWPI_Invoice::exists( $order->id ) ) { return; } $url = add_query_arg( array( 'bewpi_action' => 'view', 'post' => $order->id, 'nonce' => wp_create_nonce( 'view' ), ) ); $invoice = new BEWPI_Invoice( $order->id ); $tags = array( '{formatted_invoice_number}' => $invoice->get_formatted_number(), '{order_number}' => $order->id, '{formatted_invoice_date}' => $invoice->get_formatted_invoice_date(), '{formatted_order_date}' => $invoice->get_formatted_order_date(), ); // find and replace placeholders. $title = str_replace( array_keys( $tags ), array_values( $tags ), $atts['title'] ); // MOD OF THE PLUGIN thegem_button(array( 'tag' => 'a', 'href' => esc_attr( $url ), 'text' => esc_html__($title, 'thegem' ), 'style' => 'outline', 'size' => 'medium', 'extra_class' => 'checkout-exit', 'attributes' => array( 'value' => esc_attr__( $title, 'thegem' ), ) ), true); // ORIGINAL OUTPUT // printf( '%2$s', esc_attr( $url ), esc_html( $title ) ); } 

Fügen Sie den obigen Code in Ihre functions.php ein und verwenden Sie diesen benutzerdefinierten Shortcode

 echo do_shortcode( '[custom-bewpi-download-invoice title="Download (PDF) Invoice {formatted_invoice_number}" order_id="' . $order->id . '"]' ); 

Lass mich wissen, welchen Output es dir gibt.

Sie können in Ihrem Child-Theme Verzeichnis den Plugin-Namen und die Plugin-Datei überschreiben. Beispiel child-theme-name / plugin-name / beispiel.php