2012-06-18 49 views
0

我試圖將一個自定義cms模塊修改爲一個WordPress插件。WordPress插件管理頁面加載錯誤的地方

該插件僅包含管理部分。訪客看到的部分是通過嵌入PHP代碼的常規WordPress頁面加載的。這工作正常。

對於管理部分,我在插件目錄中創建了一個單獨的文件夾,其中包含兩個PHP文件。該插件被激活,菜單項正確加載。但是,我遇到的問題是,該插件的管理內容在每個wordpress管理頁面加載 A),並且一直在頁面頂部加載 B)。整個管理菜單都放在我放入內容的wrap類下方。

對於A)我想我應該告訴插件只加載在自己的網頁上,但我不知道如何。對於B)我的猜測是我應該告訴插件在哪裏插入內容(使用鉤子?),但我不知道如何。 這是我第一次嘗試構建一個插件。我已經閱讀過很多關於如何編寫插件的網站,但我無法做到。

兩個PHP文件:

  • 主要插件文件:verkoopstatus-admin.php的(我離開了插件模板信息部分):

Pastebin verkoopstatus-admin.php

  • 的內容部分的插件:verkoopstatus.php

Pastebin verkoopstatus.php

誰能告訴我我在這裏失蹤了什麼?

回答

0
<?php 
/* 
if($include_flag == 1) 
{ 
*/ 
function showHome($project) 
{ 
    $home_query = mysql_query("SELECT * FROM mod_verkoopstatus WHERE project = '$project'") or die(mysql_error()); 
    while($home_info = mysql_fetch_object($home_query)) 
    { 
     if($home_info->status == 1) 
     { 
      $color = '#2E2EFE'; 
     } 
     if($home_info->status == 2) 
     { 
      $color = '#3E8028'; 
     } 
     if($home_info->status == 3) 
     { 
      $color = '#F26A20'; 
     } 
     if($home_info->status == 4) 
     { 
      $color = '#F1F121'; 
     } 
     echo '<a target="_self" href="http://localhost/abc/wp-admin/admin.php?page=Verkoopstatus'.$home_info->project.'&nr='.$home_info->nr.'">'; 
     echo '<div style="position: absolute; border: 1px solid black; margin-left: '.$home_info->left.'px; margin-top: '.$home_info->top.'px; height: '.$home_info->height.'px; width: '.$home_info->width.'px; background-color: '.$color.'"><p style="padding-top: 0px; margin-top: 0px;" align="center">'.$home_info->nr.'</p></div>'; 
     echo '</a>'; 
    } 
} 

一塊的最後一個支架上方應該在你的文件結尾(後結束的div .wrap)

+0

謝謝Gembel!管理員設置現在只顯示在插件管理頁面上。但是,信息不斷重複,而不是一次。任何想法? – user968863

+0

調整的代碼: [鏈路(] http://pastebin.com/fqEgm02W) 當我劃分碼成塊: 1:showhome功能 2:如果(isset部分 3:表/ HTML/CSS 4:關閉PHP 也停用所有代碼塊4(不知道它的意圖) 測試: 1.如果代碼是你看到引擎收錄,問題是作爲最初發布 2.移動第一個塊到第四個塊的結束括號:頁面僅在插件頁面上顯示,並且在頁眉下方顯示,但插件本身顯示爲一個循環。 3.將塊2的結束括號阻止4:空白頁面。 我需要找到一種方法來應用Gembel的解決方案,但避免循環。任何人? – user968863

+0

已經取得了一些進展,將關閉這個話題,並開闢一個新的。 – user968863

0

我認爲是更好的是

function showHome($project) 
{ 
    $out = ''; 

    $home_query = mysql_query("SELECT * FROM mod_verkoopstatus WHERE project = '$project'") or die(mysql_error()); 
    while($home_info = mysql_fetch_object($home_query)) 
    { 
     switch ($home_info->status) { 
      case 1: 
       $color = '#2E2EFE'; 
       break; 

      case 2: 
       $color = '#3E8028'; 
       break; 

      case 3: 
       $color = '#F26A20'; 
       break; 

      case 4: 
       $color = '#F1F121'; 
       break; 
      default: 
       $color = '#FFF'; 
       break; 
     } 

     $out.= '<a target="_self" href="http://localhost/abc/wp-admin/admin.php?page=Verkoopstatus'.$home_info->project.'&nr='.$home_info->nr.'">'; 
     $out.= '<div style="position: absolute; border: 1px solid black; margin-left: '.$home_info->left.'px; margin-top: '.$home_info->top.'px; height: '.$home_info->height.'px; width: '.$home_info->width.'px; background-color: '.$color.'"><p style="padding-top: 0px; margin-top: 0px;" align="center">'.$home_info->nr.'</p></div>'; 
     $out.='</a>'; 
    } 
    return $out; // & echo showHome($project); 
}