問題描述

我正在尋找在 Magento 內部整合 WordPress 的最佳方法。

首先我想讓 WordPress 使用 Magento 的頁首和頁尾。

第二,我希望使用者可以同時在 Magento 和 WordPress 上進行搜尋。不要卡住不得不搜尋輸入。

最佳解決方案

這取決於。你有選擇:

如果您使用 Fishpig 模組 (這是一個很好的模組),您可以使用 http://www.magentocommerce.com/magento-connect/mage-wordpress-integrated-search-4394.html

最新的解決方案是開發您自己的 WordPress 整合 Magento 🙂

次佳解決方案

我已經在一些網站上使用了 Fishpig 模組,已經購買了付費的外掛,並且已經高興地推廣了這麼多年了。但是,我不再使用它了。它做的很好,但它做的是透過 Magento 執行一切。

讓我們來看看,客戶可以看一下 WordPress 的網站,突然開始變得有創意。 「我們可以在 Wordpress 中做到這一點!」,「我們可以在 Wordpress 安裝!你必須繼續向他們解釋,通常這是很容易在 Wordpress …. 但是他們的 WordPress 安裝是不正常的,因為它都是透過 Magento 本身,並改變一切。

所以您的銀行定製 Wordpress 小工具將無法正常工作,第三方 Wordpress 外掛將無法正常工作。主題和主題選項將無法正常工作。除非你做一些工作轉換並將它們吸收到 Fishpig 模組中。

在我看來,一個更好的方法是走 James Kemp(http://wordpress.org/plugins/magento-wordpress-integration/) 或 Richard Feraro(http://wordpress.org/plugins/mage-enabler/) 的路。他們都採取相同的方法,允許您從 Wordpress 訪問 Mage 物件,並將您想要的任何 Magento 拉入 Wordpress 主題。如果你看看外掛,它們很簡單,不需要太多的程式碼。

他們都需要修改 app/code/local/Mage/Core/functions.php,因為 Wordpress 和 Magento 均宣告瞭 function __()方法。有關這兩個外掛作者網站的詳細說明,這很容易。之後,你可能會陷入困境。

這很簡單,這裡有一個使用 James Kemp 外掛的例子。你可以用一個 header.php 的 WordPress 主題,

<!DOCTYPE html>
<html class="no-js">
<head>
    <?php the_block("head"); ?>
    <?php wp_head(); ?>
</head>

<body <?php body_class(); ?>>

這將您的整個 Magento 頭塊拉入 Wordpress 標題。完美,沒有重複,沒有額外的工作。注意我新增了 wp_head(),因為如果你新增 Wordpress 外掛,他們可能會使用它作為一個鉤子,這是很好的做法,在您的 Wordpress header.php 檔案。

對於 footer.php 也是如此

    <?php the_block("footer"); ?>
    <?php wp_footer(); ?>

  </body>
</html>

還有你的 Magento 頁尾塊在 Wordpress 。其餘的取決於你,但你可以自由地新增任何額外的東西到您的 Wordpress 安裝,你喜歡沒有任何限制。

編輯 – 5 月 14 日

自從我寫了這個我也開始使用 Wordpress 作為 CMS,並使用這個 Wordpress 外掛將資料拉回到 Magento – JSON API 外掛 http://wordpress.org/plugins/json-api/

為了給你一個程式碼示例 – 下面的程式碼為 Wordpress 中的必要條目提供了一個稱為事件的自定義帖子型別,在這些名為 eventdate 的帖子中訪問一個自定義欄位,將它們全部放在陣列中,按日期排序並輸出所有的列表事件與 WordPress 安裝中的每個事件頁面的連結。我在 Magento 網站的主導航中使用了它,它的工作原理非常好。 WordPress 是將 JSON API 新增到核心,但至今尚未釋出。

<ul>
    <?php 

    $events = json_decode(file_get_contents('http://www.example.com/blog/?json=get_posts&post_type=event'));

    $eventList = array();

    foreach ( $events->posts as $event_item ) :

        $arrayDate = date("ymdHi", strtotime($event_item->custom_fields->eventdate[0] ));

        $eventList[$arrayDate]['Title'] = $event_item->title;
        $eventList[$arrayDate]['Date'] = date('l jS F', strtotime($event_item->custom_fields->eventdate[0] ));
        $eventList[$arrayDate]['Link'] = $event_item->url;


    endforeach; 

    // Key reverse sort to get events in date order
    ksort($eventList);

    foreach ($eventList as $eventItem) : 

        echo '<li><a href="http://'.%20$eventItem['Link']%20.'">'. $eventItem['Title'] .' - '. $eventItem['Date'] .'</a></li>';

    endforeach;     

    ?>
</ul>

編輯 – 10 月 15 日

我最近不得不嘗試使用這種整合方法在多商店使用與 Matthias Zeis 這個問題相同的國家程式碼子目錄;

Different storeviews or websites in subfolders

我確實考慮為此而嘗試使用 Fishpig multistore 擴充套件,但是最後我問了一個關於 SO 的問題 – > https://stackoverflow.com/questions/32613815/htaccess-wordpress-under-magento-site-with-multi-language-sub-directories

我把答案放在那裡,它使用伺服器環境變數和一些 Wordpress 過濾器。我也新增了.htaccess 和 Nginx 伺服器塊來幫助。

此外,對於任何使用 Capistrano 部署 Magento 網站的人員,以及不斷更新的 Wordpress 核心和外掛汙染他們的回購的前景,我寫了一篇部落格文章,顯示如何將所有內容全部移動到 Capistrano 3 的共享目錄中,只有你的 WordPress 主題在回購;

http://www.mcnab.co/blog/wordpress-git-and-capistrano-v3/

第三種解決方案

Fishpig 的 WordPress 整合擴充套件。它是免費的,工作良好,整合的主題。不整合搜尋。但它是我們所知道的最好的整合方法。

第四種方案

也可以使用 wordgento:http://wordpress.org/plugins/tristar-wordgento/

我已經把它用於我的部落格,工作得很好。

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。