WordPress插件管理页面加载到错误的地方


Wordpress plugin admin page loads in the wrong places

我正在尝试将自定义cms模块修改为WordPress插件。

该插件仅由管理部分组成。访问者看到的部分是通过嵌入PHP代码的常规WordPress页面加载的。这工作正常。

对于管理部分,我在插件目录中创建了一个单独的文件夹,其中包含两个 PHP 文件。插件被激活,菜单项正确加载。但是,我遇到的问题是加载了插件的管理内容A)在每个wordpress管理页面中,以及B)一直到页面顶部。整个管理菜单位于我放在内容周围的包装类下方。

对于 A)我想我应该告诉插件只在自己的页面上加载,但我不知道怎么做。对于 B) 我的猜测是我应该告诉插件在哪里插入内容(使用钩子?),但我也不知道如何插入。这是我第一次尝试构建插件。我已经在许多网站上阅读了有关如何编写插件的信息,但我就是无法正确理解。

这两个 PHP 文件:

  • 主插件文件:verkoopstatus-admin.php(我省略了插件模板信息部分):

Pastebin verkoopstatus-admin.php

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

Pastebin verkoopstatus.php

谁能告诉我我在这里错过了什么?

<?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 end .wrap之后)

我认为更好的是

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);
}