Ein Client hat angefordert, dass wir eine Kopie seiner WordPress-Widgets auf einer separaten, nicht von WP erstellten Website erstellen.
Gibt es eine einfache Möglichkeit, das Widget “anzumelden”? Ich stelle mir vor, ich müsste irgendwie zu etwas im WordPress-Backend kommen.
Hier ist meine vorgeschlagene Lösung, es erfordert, dass Sie Widget Logic oder dynamische Widgets verwenden .
iframe
src
auf der Nicht-WordPress-Site verwenden (geben Sie einen beschreibenden Titel, Entwickler neigen dazu, eine Menge zu vergessen). is_single(N);
Wobei N die Seiten- oder Post-ID ist. Hier ist der Code für den ersten Schritt:
/** * Verify dependencies * * In this example, we check for plugins in this order: * - Widgets Logic * - Dynamic Widgets */ define( 'WPSE_168484_ERROR' , __( 'Please install and activate Widgets Logic or Dynamic Widgets and use one of them to show only one widget per page, you can still use many iframes in the non-WordPress website.' ) ); function_exists( 'widget_logic_options_control' ) || defined( 'DW_VERSION') || die( WPSE_168484_ERROR ); // Declare sidebar register_sidebar( array( 'name' => __( 'My Iframe', 'my_textdomain' ), 'id' => 'my_iframe', ) ); // Show sidebar as HTML add_action( 'init', 'my_iframe_widget' ); function my_iframe_widget() { if( is_active_sidebar( 'my_iframe' ) ) { // Get widget HTML ob_start(); dynamic_sidebar( 'my_iframe' ); $widget_html = ob_get_clean(); // Remove wrapping $widget_html = preg_replace( '/^ /', '', $widget_html ); $widget_html = preg_replace( '/< \/li>$/m', '', $widget_html ); // Make Valid HTML5 $widget_html = "< !doctype html>$widget_html"; // Output and exit die( $widget_html ); } }
Hier ist der Code für den 6. Schritt:
Ersetzen Sie http://example.com/ durch Ihre URL und N durch die Seiten- oder Post-ID.