Ich benutze Woocommerce für eine Website und wo der Kunde Software verkauft. Eine der Optionen, die ich hinzufügen muss, ist das Anfordern einer Lizenzschaltfläche auf meiner Kontoseite.
Ich habe bereits die Funktion, die dies in einer Datei request-license.php im woocommerce-Ordner in meinem Design ausführt, aber ich habe Probleme, einen neuen Punkt hinzuzufügen.
Wenn Sie auf Ansicht klicken, ruft der Endpunkt die Datei view-order.php auf, sodass ich die Anforderungslizenz aufrufen möchte, wenn auf die Schaltfläche Anforderungslizenz geklickt wird.
hier ist wie heißt
<?php
$actions = array();
if ( in_array( $order->get_status(), apply_filters( 'woocommerce_valid_order_statuses_for_payment', array( 'pending', 'failed' ), $order ) ) ) {
$actions['pay'] = array(
'url' => $order->get_checkout_payment_url(),
'name' => __( 'Pay', 'woocommerce' )
);
}
if ( in_array( $order->get_status(), apply_filters( 'woocommerce_valid_order_statuses_for_cancel', array( 'pending', 'failed' ), $order ) ) ) {
$actions['cancel'] = array(
'url' => $order->get_cancel_order_url( wc_get_page_permalink( 'myaccount' ) ),
'name' => __( 'Cancel', 'woocommerce' )
);
}
$actions['license'] = array(
'url' => $order->get_request_license_url(),
'name' => __( 'Request License', 'woocommerce' )
);
$actions['view'] = array(
'url' => $order->get_view_order_url(),
'name' => __( 'View', 'woocommerce' )
);
$actions = apply_filters( 'woocommerce_my_account_my_orders_actions', $actions, $order );
if ( $actions ) {
foreach ( $actions as $key => $action ) {
echo '<a href="' . esc_url( $action['url'] ) . '" class="button ' . sanitize_html_class( $key ) . '">' . esc_html( $action['name'] ) . '</a>';
}
}
?>
Ich weiß, dass ich die Funktion get_request_license_url () erstellen muss, bin mir aber nicht sicher, wie ich sie implementieren soll. Ich hoffe, ich kann hier etwas Hilfe haben
woocommerce
user3344329
quelle
quelle
Antworten:
Woocommerce hat anscheinend keine Filter bei der Registrierung seiner Endpunkte, https://github.com/woothemes/woocommerce/blob/master/includes/class-wc-query.php#L84
Sie müssen also Ihren neuen Endpunkt einfach so an den Init-Hooks hinzufügen
Dann müssen Sie etwas filtern
wc_get_template
, um Ihre Dateien aufzurufen, wenn die Anforderung mit Ihrem Endpunkt übereinstimmtso , wenn Sie meine Kontoseite mit Endpunkt besuchen
license
, lassen Sie sagenhttp://yourdomain.com/my-account/license/
, dass Ihre benutzerdefinierten Code angezeigt werdenquelle