Key features and functionalities of the module
- Two ways to connect to WordPress: reading the public REST API based on the blog address or connecting to the WordPress database.
- Content selection: filtering posts by categories and authors, ordering by publication date, and an option to place pinned posts first.
- A pool of 1 to 100 posts: a shared range of articles used by blocks, product pages, and the blog page in a given store.
- Several display locations: homepage, left and right column, product page, and a custom location called in the template.
- Product associations: comparing category names and product tags with the categories and tags of fetched articles.
- Blog page in PrestaShop: a list of post excerpts with pagination, category filter, custom title, meta description, and URL.
- Appearance configuration: grid or list for content blocks, number of columns, excerpt length, image size, and selection of visible information.
- Update control: manual post fetching, refresh after cache expiration, or fetching via a CRON job.
- Marking links with UTM parameters: information about the source, campaign, and place of transition from the store to WordPress.
- Support for multiple stores and languages: shared, group, or store-specific settings, as well as blog page headings and description depending on the language.
Guides matched to products
On the product page, the module searches for related posts in the fetched pool of articles. It compares the names of WordPress post categories and tags with the names of product categories and tags in the active store languages. During comparison, it standardizes letter case and spacing; the basis for matching remains name consistency. Posts with a higher number of matches are displayed first.
For example, an article marked in WordPress with the category or tag “Shoe care” may appear next to a product belonging to a category with the same name or having such a tag. This makes it possible to provide the customer with a guide related to the viewed assortment. If the module does not find a match, you can hide the block or display posts from the fetched pool in its configured order.
Publishing in WordPress, displaying in PrestaShop
Content is still created in WordPress, and the store uses its fetched copy. The module reads posts and does not save changes to WordPress. Titles and links lead to full articles on the blog, so there is no need to manually rewrite their excerpts into the store.
Connection via REST API
In this mode, you provide the WordPress site address. The module uses its public REST API, without WordPress admin login credentials. The blog may operate on a different domain or server, provided that the API is accessible from the store server. Reading includes posts made publicly available through the API; password-protected posts are skipped.
Connection to the database
The alternative mode requires the host, port, database name, user, password, and WordPress table prefix. Read-only data access permissions are sufficient. The module selects published posts without a password directly from the tables. This reading method does not trigger the additional access mechanisms of WordPress plugins, therefore for content restricted by such plugins, you should use an API providing the proper range of public posts.
Display locations and number of posts
- Homepage: from 1 to 24 posts.
- Left and right column: separate visibility switches and a shared number from 1 to 10 posts.
- Product page: from 1 to 12 posts, taking product matching into account.
- Custom location in the template: from 1 to 24 posts, after enabling this function and calling the widget or the module’s custom hook.
Each of these locations can be enabled or disabled. The availability of standard positions depends on the hooks displayed by the store theme. Custom placement allows you to insert the block into a selected part of the Smarty template.
Blog page within the store
The module creates a page in PrestaShop with a grid of excerpts from fetched articles. You can set from 4 to 48 posts per page there. An optional filter allows switching between categories present in the fetched pool and shows the number of available posts; it appears when the pool contains more than one category. Pagination and filtering apply to this pool, while full articles remain in WordPress.
The page has its own title, meta description, and configurable URL, for example “blog” or “guides”. A friendly URL requires friendly URLs to be enabled in PrestaShop. The module checks for conflicts with existing store URLs when saving it. You add the link to the blog page yourself in the store menu configuration.
The page controller sets the title and meta description, the canonical URL taking the category and page number into account, as well as breadcrumb navigation. For a page without posts, it sets the “noindex” directive, while invalid page numbers and unknown categories are handled as a 404 error.
Block appearance and article information
Blocks on the homepage, product page, and in a custom location can use a grid or list. For the grid, 2, 3, or 4 columns are available on larger screens, with fewer columns on narrower screens. Side columns use a compact view, and the blog page in the store uses a grid.
- Excerpt: length from 0 to 1000 characters; a value of 0 disables its display. The content is presented as text, without reproducing the article layout and WordPress editor elements.
- Featured image: the ability to disable images and choose a size available in WordPress. If the selected size is not available, the module looks for a larger variant or uses the original image. Images are displayed from the source URLs.
- Post information: switches for publication date, author, categories, tags, and number of comments. In REST mode, the comment counter appears when the full set of required data can be fetched.
- Headings: a shared title for blocks on the homepage, in columns, and in a custom location, a separate section title on the product page, and a separate title for the blog page.
- Links: the ability to open transitions to WordPress in a new tab and choose an additional link to the blog page in the store or to WordPress, or hide this link.
In the compact side column view, the module omits the excerpt, categories, and tags to limit content in a narrow space.
Fetched copy of posts and refresh control
The module stores a copy of post data separately for each store. This makes it possible to use fetched content without retrieving it from WordPress every time a block is displayed. In the panel, you will see the connection status, the number of available posts, the fetch date, error information, and an article preview.
- Refresh during a visit: for a time from 1 to 168 hours, the store attempts to fetch after this period has elapsed, on the next visit requiring the module data.
- Manual refresh: a button on the dashboard allows you to fetch posts on demand.
- Refresh via CRON: the panel provides a tokenized URL to be called by the server scheduler. The task handles active stores with the module enabled and a configured source.
- Mode without fetching during visits: a time of 0 means refreshing only by button or CRON job.
If refreshing the same source and post range ends with an error, the store may still show the last correctly fetched copy. Deleting the copy in the panel concerns the module data in the store and does not remove articles from WordPress. You configure the CRON scheduler outside the module.
UTM parameters in links to WordPress
After enabling UTM, the module adds the selected source and campaign name, the “referral” medium, and a marker of the display location to links leading to WordPress. Thanks to this, the URL conveys information about whether the transition came, for example, from the homepage block, product page, or blog page. Interpretation of these parameters requires an analytics tool operating on the blog side; the module does not include its own traffic or conversion reports.
Multistore and headings in store languages
The connection to WordPress, post selection, and appearance can be configured for the entire installation, a store group, or an individual store. Individual stores can use different blogs, and their fetched data copies are separate. The module supports settings inheritance and restoring parent values for the selected tab.
Block headings, the product section title, the blog page title, and its meta description can be saved for individual languages. Post content is displayed in the language received from WordPress, without automatic translation of articles.
Who is this integration for?
The module is intended for PrestaShop stores running a separate WordPress blog with guides, inspiration, or news. It makes it easier to present excerpts of this content alongside the store offer and share related articles on product pages. The store owner keeps publishing in WordPress and control over the selection and presentation of posts in PrestaShop.
The module is intended for PrestaShop 1.7, 8, and 9. Its code covers PHP from 7.0 to 8.5, while the server must also meet the requirements of the PrestaShop version in use. Reading via REST requires an available public WordPress API and support for HTTP connections in PHP, while reading from the database requires PDO MySQL and access to the WordPress database.