=== Magento 2 WP Integration === Contributors: yaroslav0yachmenov, ayachmenev, maximtkachuk, modernminds Donate link: https://www.paypal.com/donate/?hosted_button_id=DXCYEM458DRU2 Tags: magento2, magento, e-commerce, shop, integration Requires at least: 4.0 Tested up to: 6.8 Requires PHP: 7.3 Stable tag: 1.4.2.1 License: GPLv3 or later License URI: http://www.gnu.org/licenses/gpl-3.0.html Combine Magento 2 with the CMS capabilities of WordPress. Seamless user experience for visitors by integrating the design of Magento and WordPress. == Description == Combine the powerful e-commerce solution Magento 2 with the excellent CMS capabilities of WordPress. The Magento 2 WordPress Integration Plugin integrates Magento 2 with WordPress so users will have an unified user experience. Share session/cart data, navigation menus, header, footer, products, layout elements and static blocks by using shortcodes or functions. This plugin is not meant to replace Magento 2, instead it will allow you to create a seamless user experience for your visitors by integrating the design of Magento and WordPress. = Features = * Include Magento 2 blocks in your WordPress theme * Use shortcodes to include products, cart, layout blocks, and static blocks in the WordPress editor ("Add Magento2 Shortcode" button) * Share session and cart data between Magento 2 and WordPress * Include product information in your WordPress editor * Seamlessly integrate your Magento 2 and WordPress theme * Display cart/mini cart with session data * 4 Widgets to display static blocks, product slider, single product or cart * Slider and Single Product templates can be overridden in current theme * Auto adding possibility of header and footer from your Magento 2 (only if your theme is using HTML5 approach) = Basic Usage = You can use the following functions in your theme files: * Get HTML content (as string) of the header: m2i_get_header() * Get HTML content (as string) of the footer: m2i_get_footer() * Get HTML content (as string) for CSS files: m2i_get_links_css_tags() * Get HTML content (as string) for JS files: m2i_get_scripts_from_head() or m2i_get_scripts_from_body() * Get HTML content (as string) of the parts (elements) of the site by CSS selector: m2i_get_els_by_css_selector($css_selector) * Get HTML content (as string) of the part (element) of the site by CSS selector: m2i_get_el_by_css_selector($css_selector) * Get Product Data as array: m2i_get_product($sku_or_id, $by_id = false) * Get Categories List as array: m2i_get_cat_collection($is_active = true, $level = false, $sort_by = false, $page_size = false) * Get Store Views List as array: m2i_get_stores() * Get Store Views List as array: m2i_get_blocks() * Get Customer Info as array: m2i_get_customer_info() * Get HTML content (as string) of the CMS block : m2i_get_cms_block($attrs), where $attrs['name'] - name of the CMS block in your Magento2 * Get HTML content (as string) of the Cart: m2i_get_cart($attrs), if in $attrs is set key 'hide_if_empty' it will be hidden if empty. You can use the following shortcodes in your WordPress editor: * Show Block: [m2i_cms_block name="name_in_layout"] * Show Slider: [m2i_category_slider dom_id="unique-id" cats_ids="categories_ids_separated_by_comas" qty="quantity_of_products" margin="in_number"] * Show Single Product: [m2i_product_block id="product id"] or [m2i_product_block sku="product sku"] * Show Cart: [m2i_cart] or [m2i_cart hide_if_empty] You can override Slider and Single Product templates in your current theme directory CURRENT_THEME_DIR/m2i-templates/product-view.php or slider.php == Installation == You can only use this plugin if your WordPress installation is on the same server as your Magento installation. This plugin requires several Magento store files to be included using PHP, this means it needs to be on the same server as your WordPress Installation. In addition, session data is stored per server and thus only available if both platforms are installed on the same server. Nevertheless, in most setups you can use different subdomains with this plugin. 1. Download the WordPress plugin 2. Upload the contents of the zip to your plugin directory 3. Enable the plugin in your WordPress admin 4. Complete the settings in the plugin settings page = Session sharing additional setup = If you want to be sure about session sharing (especially when a user is logged in) between Magento and WordPress, you need to add the next code to Magento index.php file before Bootstrap line: ` if ( isset( $_COOKIE['PHPSESSID'] ) ) { /* To share logged in user session with WP frontend */ setcookie( 'PHPSESSID', $_COOKIE['PHPSESSID'], time() + 3600, '/', '.local.wordpress', 0 ); /* To share logged in user session with WP backend */ setcookie( 'PHPSESSID', $_COOKIE['PHPSESSID'], time() + 3600, '/wp-admin', '.local.wordpress', 0 ); } ` = Custom replacement of translation function = If for some reasons our new automatic replacement functionality doesn't work, you have to replace WordPress translation function in your own (it conflicts with Magento, so modified version is required). Apply the following patch to WordPress to avoid conflicts between WordPress and Magento 2: File: WORDPRESS_ROOT/wp-includes/l10n.php WordPress __() function is used for translation but is in conflict with Magento 2. Therefore, please find this function at around line 296 and REPLACE ` function __( $text, $domain = 'default' ) { return translate( $text, $domain ); } ` WITH ` function __( $text, $domain = 'default' ) { if ( defined( 'M2I_MAGE_DIR' ) && class_exists( 'M2I_External' ) && M2I_External::$needs_mage_translate ) { return M2I_External::translate( func_get_args() ); } else { return translate( $text, $domain ); } } ` == Frequently Asked Questions == = How could I disable automatic translation function replacement? = You have to add the next code snippet to your wp-config.php file: ` define( 'M2I_DISABLE_TRANSLATION_FUNC_MODIFY', true ); ` = What should be the absolute path of my Magento directory? = An example could be: /data/web/magento2/ It should go the main directory of your Magento 2 installation = Does it support Magento 1? = No, for support of Magento 1 there are several other plugins available = Does it support Magento 2.3 or 2.4? = Yes, since 1.3 plugin version = What are the server requirements? = Magento 2 and WordPress should be able to read each other location. Therefore, it does not matter if you use a subdirectory for example, as long as they are on the same server and can be accessed by the same user. == Screenshots == 1. General settings 2. Advanced settings 3. Magento 2 WordPress Integration == Changelog == = 1.4.2.1 = * Correct WP readme.txt to align with the standards = 1.4.2 = * Fix the WP notice for the early usage of the "load_plugin_textdomain" function. * Improve the fetching of "link rel='stylesheet'" tags in the "m2i_get_links_css_tags" function. So the Critical CSS from Magento is now possible (you still have to include critical_css_block and main_css_preloader by our functions in the code). = 1.4.1 = * Added the missed files (widgets, shortcodes) = 1.4 = * Added a possibility for automatic replacement of the translation function "__()"! It's enabled by default. * Premium version with footer support and a couple of other features goes open source! * Other minor changes, but which might affect you if you are using PHP < 7.3. Plugin will not function. * Tested with Magento 2.4.3 * Tested with WordPress 6.0 = 1.3.1 = * Tested with WordPress 5.2.2 * Tested with Magento 2.3.1 * Added "Auto store view selection" option for selection of the right store view dynamically according to the domain, only Magento >= 2.3.0 * Improved store view selection for the Magento >= 2.3.0 * Added touchEnabled=false setting for product slider by default, because of incompatibility with Chrome browser = 1.3.0.1 = * Tested with WordPress 5.1 * Added more info (via question mark) to "Exclude JS files" option = 1.3 = * Fixed Magento 2.3.0 integration issue * Minor changes in php doc. of methods of widgets * Fixed fatal error inside ajax request of M2WP Product Widget * Fixed showing of unavailable product and add to cart message (product-view.php template updated) * Fixed add to cart message (slider.php template updated) * Tested with Magento 2.3.0, 2.2.7 and 2.2.6 = 1.2.7 = * Stores list for the settings page will be fetched even when error has been occurred * Store code showing near the store name in the stores list on the settings page, might be helpful if there are same store names * Fixed path when magento is configured without url rewrites * Fixed