Magento is a well architectured, open-source e-commerce platform that are widely used these days. It has many professional and flexible functionalities, but one of the lacking features is a blogging tool. Its CMS is suitable to write static pages for websites, not for blogging. But there is another great open-source blogging software that is loved by numerous bloggers, WordPress. Integrating these two tools is not generally a big issue.
There are a couple of ways to integrate Magento e-commerce store with WordPress blog.
- You can install Magento plug-in to integrate WordPress. This extension allows you to manage both the store and the blog on the same interface. However, it seems some users have experienced difficulties to make it work especially when they use a customized / non-default theme. Download WordPress integration plug-in: Magento Extension - Wordpress Integration
- Another way is to install both of them separately and modify .htaccess file(s) so that they won’t have conflicts.
One of the most common fixes of .htaccess related issues is to define RewriteBase in one of the .htaccess files.
Let’s say I’ve already installed my Magento store on ‘http://www.mystore.com’ and now I want to install WordPress blog to ‘http://www.mystore.com/blog/’.
Most likely, I don’t need to modify Magento .htaccess file. But I need to define RewriteBase and change RewriteRule appropriately in WordPress .htaccess file as follows.
# BEGIN WordPress
RewriteEngine On
RewriteBase /blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
# END WordPress
Do you see the two column layout being used for your homepage even when the three column layout is defined as the default layout in *page.xml? It’s probably because the homepage is set to use the two column layout in CMS.
- Go to CMS -> Manage Pages.
- Find a page whose identifier is ‘home’ and click on it.
- Make sure the homepage that you enable uses 3 columns. You can update this by clicking Custom Design from the left menu.

It’s a nice feature that you can easily edit the homepage through CMS and you can assign a particular layout for each CMS page.
Many Magento users find it very disappointing not to be able to delete test orders or at least to make them removed from the Admin Sales page.
It’s a required step that merchants or developers place several test orders before they officially launch the site. Obviously, they don’t want their test sales mixed in the regular sales reports. It’s hard to believe, but there is no easy solution for this in Magento Admin panel.
These MySql queries can be handy when you want a fresh start with your Magento store. This is not a definite solution because you directly update the database using queries and also because it works only when you can remove all order data.
This includes queries to delete customer data and orders for downloadable products.
Don’t forget to backup your DB before you run these!
SET FOREIGN_KEY_CHECKS=0;
– Reset sales data
TRUNCATE `sales_order`;
TRUNCATE `sales_order_datetime`;
TRUNCATE `sales_order_decimal`;
TRUNCATE `sales_order_entity`;
TRUNCATE `sales_order_entity_datetime`;
TRUNCATE `sales_order_entity_decimal`;
TRUNCATE `sales_order_entity_int`;
TRUNCATE `sales_order_entity_text`;
TRUNCATE `sales_order_entity_varchar`;
TRUNCATE `sales_order_int`;
TRUNCATE `sales_order_text`;
TRUNCATE `sales_order_varchar`;
TRUNCATE `sales_flat_quote`;
TRUNCATE `sales_flat_quote_address`;
TRUNCATE `sales_flat_quote_address_item`;
TRUNCATE `sales_flat_quote_item`;
TRUNCATE `sales_flat_quote_item_option`;
TRUNCATE `sales_flat_order_item`;
TRUNCATE `sendfriend_log`;
TRUNCATE `tag`;
TRUNCATE `tag_relation`;
TRUNCATE `tag_summary`;
TRUNCATE `wishlist`;
TRUNCATE `log_quote`;
TRUNCATE `report_event`;
ALTER TABLE `sales_order` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_datetime` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_decimal` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_entity` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_entity_datetime` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_entity_decimal` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_entity_int` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_entity_text` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_entity_varchar` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_int` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_text` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_varchar` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_address` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_address_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_item_option` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_item` AUTO_INCREMENT=1;
ALTER TABLE `sendfriend_log` AUTO_INCREMENT=1;
ALTER TABLE `tag` AUTO_INCREMENT=1;
ALTER TABLE `tag_relation` AUTO_INCREMENT=1;
ALTER TABLE `tag_summary` AUTO_INCREMENT=1;
ALTER TABLE `wishlist` AUTO_INCREMENT=1;
ALTER TABLE `log_quote` AUTO_INCREMENT=1;
ALTER TABLE `report_event` AUTO_INCREMENT=1;
– Reset customers data
TRUNCATE `customer_address_entity`;
TRUNCATE `customer_address_entity_datetime`;
TRUNCATE `customer_address_entity_decimal`;
TRUNCATE `customer_address_entity_int`;
TRUNCATE `customer_address_entity_text`;
TRUNCATE `customer_address_entity_varchar`;
TRUNCATE `customer_entity`;
TRUNCATE `customer_entity_datetime`;
TRUNCATE `customer_entity_decimal`;
TRUNCATE `customer_entity_int`;
TRUNCATE `customer_entity_text`;
TRUNCATE `customer_entity_varchar`;
TRUNCATE `log_customer`;
TRUNCATE `log_visitor`;
TRUNCATE `log_visitor_info`;
ALTER TABLE `customer_address_entity` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_datetime` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_decimal` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_int` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_text` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_varchar` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_datetime` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_decimal` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_int` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_text` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_varchar` AUTO_INCREMENT=1;
ALTER TABLE `log_customer` AUTO_INCREMENT=1;
ALTER TABLE `log_visitor` AUTO_INCREMENT=1;
ALTER TABLE `log_visitor_info` AUTO_INCREMENT=1;
– Reset purchased downloadable data
TRUNCATE `downloadable_link_purchased`;
TRUNCATE `downloadable_link_purchased_item`;
ALTER TABLE `downloadable_link_purchased` AUTO_INCREMENT=1;
ALTER TABLE `downloadable_link_purchased_item` AUTO_INCREMENT=1;
– Reset all ID counters
TRUNCATE `eav_entity_store`;
ALTER TABLE `eav_entity_store` AUTO_INCREMENT=1;
SET FOREIGN_KEY_CHECKS=1;
Magento saves visitor and URL access information in its log tables (log_url, log_url_info, log_visitor and log_visitor_info). These tables can be quite large and affect site performance if they are not maintained. Majority of people already have some kind of traffic analysis tool - one of the most popular tools is free Google Analytics - and they don’t necessarily find Magento log tables very efficient.
You can set up a log cleaning cron job through Magento Admin panel.
- Go to System -> Configuration.
- Click on System from the left menu (almost at the bottom).
- Open Log Cleaning area and change the settings as you want.

A bug was reported in the 1.2.0.3 version regarding this functionality. It seems fixed and the fix should be included in the next release:
Locate app/code/core/Mage/Adminhtml/Model/System/Config/Backend/Log/Cron.php:
$enabled = $this->getData(’groups/log/enabled/value’);
$time = $this->getData(’groups/log/fields/time/value’);
$frequncy = $this->getData(’groups/log/frequency/value’);
$errorEmail = $this->getData(’groups/log/error_email/value’);
Change the above codes from the function ‘_afterSave()’ to the following:
$enabled = $this->getData(’groups/log/fields/enabled/value’);
$time = $this->getData(’groups/log/fields/time/value’);
$frequncy = $this->getData(’groups/log/fields/frequency/value’);
$errorEmail = $this->getData(’groups/log/fields/error_email/value’);
(It’s missing “fields/” in $enabled, $frequncy, and $errorEmail.)
We’d think our lovable free PHP IDE, Eclipse PDT, would come with word wrap functionality because it’s so basic. Surprisingly, it doesn’t. However, it’s not complicated to add this feature to your Eclipse PDT editor.
We still have turn on the feature for each PHP file, but it’s still better than not having one.