• Resolved kallovsky

    (@kallovsky)


    Anknüpfend an dieses Thema, auf das ich bei meiner Recherche gesto?en bin, m?chte ich nach viel Herumprobieren meinen L?sungsansatz teilen, welcher immerhin als Workaround funktioniert und hoffentlich irgendwem diese Zeit erspart.
    Ich habe anfangs versucht die Klasse WCPayPalPlus\ExpressCheckoutGateway\ServiceProvider des Plugins über ein weiteres Plugin zu erweitern, hatte aber konsequent das Problem, dass ich zur Laufzeit nicht an die eigentliche WCPayPalPlus Instanz ran gekommen bin. Das Plugin verhindert sinniger Weise dass eine weitere Instanz aufgebaut wird, ich habe jedoch keine M?glichkeit gefunden von der Elternklasse die Instanz zu adressieren, wie es beispielsweise sonst über ein singleton object seitens des Plugins implementiert wird.

    Daher hier mein etwas uneleganter Workaround, welchen man daher sogar in seiner functions.php einbinden k?nnte.

    
    /**
     * shows a paypal plus express checkout button at WC checkout
     * 
     * searches for active filters in global $wp_filter to get the paypal plus plugin instance
     * does not work when express checkout is disabled at mini cart or cart
     */
    function custom_wc_add_paypalplus_express_button(){
        if( ! class_exists( 'WCPayPalPlus\ExpressCheckoutGateway\ServiceProvider' ) ) return false;
        global $wp_filter;	
        $priority = 25;     		// from WCPayPalPlus\ExpressCheckoutGateway\ServiceProvider:241
        $woocommerce_proceed_to_checkout_filters = ( isset( $wp_filter['woocommerce_proceed_to_checkout']) ? $wp_filter['woocommerce_proceed_to_checkout'][$priority] : false );
        if ( ! $woocommerce_proceed_to_checkout_filters ) return false;
    	// searching for ppplus instance
        foreach( $woocommerce_proceed_to_checkout_filters as $filter){
    		// lading callback
    		$ppplus_instance = ( isset( $filter[ 'function' ][0] ) ) ? $filter[ 'function' ][0] : false;
    		// checking for ppplus instance
            if ( $ppplus_instance && is_a( $ppplus_instance, 'WCPayPalPlus\ExpressCheckoutGateway\CartButtonView' ) ){
                add_action( 'wki_show_express_checkout_buttons', array( $ppplus_instance, 'render' ) );
    			return true;
            }
        }
    }
    add_action( 'init', 'custom_wc_add_paypalplus_express_button');
    

    HINWEIS:
    Lt. dem Support Kommentar des verlinkten Threads wird von PayPal angeraten den Express Checkout nicht im Kassenprozess einzubinden, da hier zwei mal die PayPal Zahlungsart zur Verfügung steht und dies ggfs. zu Konflikten mit dem PayPal Servern führen kann.
    Ich habe bisher keine Probleme in diesem Kontext beim Testen feststellen k?nnen.

    Beste Grü?e

    • This topic was modified 2 years, 8 months ago by kallovsky.
    • This topic was modified 2 years, 8 months ago by kallovsky.

    The page I need help with: [log in to see the link]

Viewing 1 replies (of 1 total)
  • Plugin Support Syde Niklas

    (@niklasinpsyde)

    Vielen Dank für das Teilen deiner L?sung.
    Anfragen für einen Express Button auf der Checkout Seite gab es bereits h?ufiger, jedoch bisher leider keine offizielle L?sung.
    Die weitere Entwicklung des PayPal Plugins wurde bis auf weiteres gestoppt, das hei?t solch ein Feature wird also auch nicht mehr kommen, zumindest nicht offiziell.
    Den Filter werden wir aber entsprechend vermerken.

    Das neue PayPal Payments hingegen wird etwas sp?ter in diesem Jahr Unterstützung für den neuen WooCommerce Block Checkout erhalten. Bei der Gelegenheit wird vermutlich auch ein offizieller Express Block für die Checkout Seite implementiert.
    Dies befindet sich jedoch noch in der Planungsphase.

    Viele Grü?e,
    Niklas

Viewing 1 replies (of 1 total)
  • The topic ‘[NSFW] Paypal Express Button auf der Checkout/Kassen Seite anzeigen’ is closed to new replies.