2015-11-17 64 views
2

我試圖將一個Wordpress網站(目前由外國,很難處理與Web開發公司,託管)到另一臺服務器,然後關閉它。我有權訪問wp-admin,但沒有cpanel或ftp,並且有內存限制,阻止我使用完整的複製/遷移插件。移動Wordpress與woocommerce:get_gallery_attachment_ids()大拇指不顯示

我的大部分日常工作都是HTML/CSS,而且我對SQL和PHP的使用經驗很少,但是我已經成功地將站點複製成零碎,並在本地機器上重新組合。除了一個我一直無法解決的問題之外,它的功能正如所料。

woocommerce產品頁面按預期顯示主圖像,但產品圖庫的拇指即將變空; view image

應呈現所述圖像的代碼是:

<!-- first image is viewable to start --> 
<?php echo the_post_thumbnail(); ?> </div> 
<div class="previews"> 
     <?php 
     $attachment_ids = $product->get_gallery_attachment_ids(); 
     foreach ($attachment_ids as $attachment_id) { 
      $sql="select guid from wp_posts where ID=".$attachment_id; 
      $row=mysql_fetch_object(mysql_query($sql)); 
     ?> 
     <a data-full="<?php echo $row->guid;?>"><img src="<?php echo $row->guid;?>" width="56" height="58" /></a> 
     <?php } 
     ?> 
     </div> 

當我查看網頁源的IMG SRC字面上是空的;

<a data-full=""><img src="" width="56" height="58" /></a> 
<a data-full=""><img src="" width="56" height="58" /></a> 
<a data-full=""><img src="" width="56" height="58" /></a> 
<a data-full=""><img src="" width="56" height="58" /></a> 
<a data-full=""><img src="" width="56" height="58" /></a> 

不幸的是,我對SQL非常無能,我認爲這是問題的根源?在編輯產品時,相同的代碼在原始網站上工作正常,已經完全複製(理論上),應該顯示的圖像出現在「產品庫」面板中。添加新圖像會導致相同的問題。網站上的其他圖像似乎工作正常。

任何有關可能發生的事情以及我如何糾正此錯誤的建議都將不勝感激!

編輯補充:screencap of product edit page, shows the thumbnails that should be displayed

更新:

我插入下面的代碼

<?php 
      global $product; 
     $attachment_ids = $product->get_gallery_attachment_ids(); 

     foreach($attachment_ids as $attachment_id) 
     { 
      echo $image_link = wp_get_attachment_image($attachment_id ); 
     } 
     ?> 

這顯示預期的圖像。但這不是一個解決方案,因爲圖像需要在點擊時更改主要顯示的圖像。

更新2:

我已經降級WP相匹配的原址,現在收到此錯誤上面的空圖片:

警告:mysql_fetch_object():提供的參數不是一個有效的MySQL結果資源位於C:\ xampp \ htdocs ... \ themes \ branchy \ woocommerce \ single-product.php

上面粘貼的代碼中。

更新3:

在原址

升級WordPress的(幸運還沒有消失)和圖像仍然在那裏工作正確

+0

當你說「添加新圖像導致同樣的問題。」你是什​​麼意思?您是否意味着將新圖片上傳到新網站並不能解決問題?如果你能回答這個問題,我可能會有一些想法。 – Shawn

+0

@Shawn我的意思是,如果我去編輯或創建新產品,上傳一個新圖像並將其添加到產品的畫廊,它會產生相同的行爲:它顯示在編輯產品庫面板中,但顯示空的圖像佔位符如附圖所示)。我可以將圖像插入頁面本身並顯示出來。它確實顯示圖像佔位符的正確數量,如果有幫助的話。 –

+0

我們可能需要協調一種跳轉到StackOverflow聊天工作的方式,以解決可能存在的一些問題。首先你使用WordPress的導入/導出工具來移動網站?這可能是現在數據庫中的一些不良引用,但取決於。現在,嘗試重新固定永久鏈接,以確保這不是郵件路徑的問題。另外,請使用檢查元素工具來查看瀏覽器控制檯是否針對http或https(基本上是混合內容)拋出任何錯誤。如果其他解決方案不起作用,作爲解決方案的還有一個縮略圖重建插件,如「Ajax Thumbnail Rebuild」。 – Shawn

回答

1

好吧,我不知道爲什麼這個問題是在第一次出現地方,但它可能無法連接到數據庫?

在注意到原始代碼中使用的mysql api已折舊後,我使用mysqli重建了一段代碼。

一些困難,我設法弄清楚如何使用WPDB $,而不是把連接字符串到代碼的(感謝主要是this article

<!-- first image is viewable to start --> 
     <?php echo the_post_thumbnail(); ?> 
     </div> 
     <div class="previews"> 
     <?php 
     global $wpdb; 
     $attachment_ids = $product->get_gallery_attachment_ids(); 

     foreach ($attachment_ids as $attachment_id) { 
      $sql="SELECT guid FROM wp_1posts WHERE ID = ".$attachment_id; 
      $row=$wpdb->get_row($sql); 
     ?> 
     <a data-full="<?php echo $row->guid;?>"><img src="<?php echo $row->guid;?>" width="56" height="58" /></a> 

主要的是,它的工作後!

謝謝@Shawn幫我排除故障:)

+0

很高興看到你有這個工作。 mysql對象在php 5.5中被棄用,並在PHP 7中被刪除。不知道爲什麼你的連接將無法連接,除非你的配置不同。根據wordpress上的一些trac票務,它看起來像是在mysql對象上壓扁警告,但幾年來一直在努力刪除這些警告,以便您可以進行調試。考慮到你在WP db實例上有這個工作,我將不得不假定這些配置在安裝上是不同的。這似乎通過舊系統上的升級驗證,但遷移沒有。 – Shawn

+0

既然您正在使用wordpress本身實例化的wpdb對象,它知道在哪裏查找表。 – Shawn

+0

我很高興能夠正常工作,但是現在Wordpress已經更新並引入了一個新的bug,與響應圖片的srcset有關......我可能會發佈一個關於該問題的新問題......但我會等待在聖誕節後處理!大聲笑 –