链接到第二级管理页面

时间:2012-10-23 作者:jgravois

我创建了一个带有管理菜单的插件,该菜单显示保存在自定义表中数据库中的艺术家列表。这个页面是一个“母版”页面,我试图找出如何将艺术家的名字链接到一个“详细信息”页面,所有这些都在后端。从codex和其他书籍中,我确定第二级页面应该与顶级页面相似,因为它将是一个显示内容的功能。我不知道如何“链接”到那个回调函数。

我使用以下内容添加第一级页面:

add_submenu_page(\'ppmtalentexpo\', \'TARSTE II\', \'TARSTE II\', \'administrator\', \'tarste2submenu2\', \'jwg_talentexpo_options2_page\');
然后用这个画出第一层:

function jwg_talentexpo_options2_page() {
    global $wpdb;

    $cnt = 0;
    $rows = $wpdb->get_results("SELECT * from ppm_tarste2_bands ORDER BY band_name");
    //echo \'<pre>\'; echo var_dump( $rows ); echo \'</pre>\';
    $retHTML = "<div class=\'wrap trkr\'><h2><div id=\'icon-upload\' class=\'icon32\'></div> PPM Talent Expo Administrator -- TARSTE II</h2><br><br>";
    $retHTML .= "<table cellpadding=\'5\' cellspacing=\'0\' border=\'1\' style=\'width:96%;margin:auto;\'>";
    $retHTML .= "<tr><td colspan=\'4\'>" . count($rows) . " registered.</td></tr>";
    for( $c = 0; $c<count($rows);$c++ ) :
        $retHTML .= "<tr>";
        $retHTML .= "<td><span style=\'font:bold 16px sans-serif;color:#F87114;\'><a href=\'#\'>" . $rows[$c]->band_name . "</a></span>";
        $retHTML .= "<br><b>Contact: " . $rows[$c]->band_contact_person . "</b></td>";
        $retHTML .= "<td><a href=\'mailto:" . $rows[$c]->band_email . "\'>EMAIL</a>";
        if( $rows[$c]->band_url != \'\' && $rows[$c]->band_url != \'n/a\' ){
            $retHTML .= " | <a target=\'_blank\' href=\'" . $rows[$c]->band_url . "\'>WEB</a></td>";
        } else {
            $retHTML .= "</td>";
        } // end if
        $retHTML .= "<td>" . formatPhone($rows[$c]->band_contact_phone) . "</td>";
        $retHTML .= "<td>";
        switch( (int) $rows[$c]->status ){
            case 1:
                $retHTML .= "Registered";
                break;
            case 2:
                $retHTML .= "Selected";
                break;
            case 3:
                $retHTML .= "Face-Off";
                break;
            case 4:
                $retHTML .= "Winner";
                break;
        } // end switch
        $retHTML .= "</td>";
        $retHTML .= "</tr>";
    endfor;
    $retHTML .= "</table>";
    $resHTML .= "</div>";
    echo $retHTML;
} // end function
因此,在for循环中,我试图用锚定标记链接到第二行$retHTML中每个注册艺术家的详细信息页面。我的计划是创建一个函数来显示艺术家的细节。再说一遍,我应该在锚定标签中添加什么,或者是否有更好的方法来完成我正在尝试的事情?

Jon,提前感谢您提供的任何指导或帮助

1 个回复
最合适的回答,由SO网友:Adam 整理而成

这个add_submenu_page 函数允许您链接到回调函数及其此回调函数,该回调函数用于处理该页面内容的显示。

add_submenu_page( 
     $parent_slug, //The slug name for the parent menu i.e. ppmtalentexpo
     $page_title, 
     $menu_title, 
     $capability, 
     $menu_slug, 
     $callback_function //your callback i.e. jwg_talentexpo_options2_page
);
到目前为止,假设你所有的论点都是正确的,那么你所说的似乎是对的。

您可能不需要创建自定义表,而可以使用自定义Post类型来处理您的;标注栏;。

然后所有的细节,比如,

band_contact_person
band_email
band_url
。。。可能是post_meta 与您的自定义帖子类型关联“;标注栏;。

使用内置的WordPress API函数,如WP_Queryget_post_meta.

因为就目前而言,你很可能会列出所有乐队的名字,

$retHTML .= "<td><span style=\'font:bold 16px sans-serif;color:#F87114;\'><a href=\'#\'>" . $rows[$c]->band_name . "</a></span>";
但我必须问你们的问题是,这在哪里$rows[$c]->band_name 指向没有,在哪里。就是在那里。

除非您对构建自定义表以及随附的数据感到满意,否则您的生活将很艰难。

相反,您应该利用内置的自定义帖子类型以及随之而来的自动URL/永久链接处理。

到目前为止,这有意义吗

根据您的其他评论,我可以了解您现在的情况。虽然Laravel和CI在外部应用程序中很好,但不建议将它们引入WordPress环境(尽管完全可能),除非您有一个特殊的用例,除此之外别无选择。

WordPress在一个易于使用的API中加入了许多您正在寻找的功能,事实上,所有这些功能都是通过API实现的,它可以抽象掉许多繁重的工作,并防止需要重新发明轮子。

因此,为了让你开始了解。。。

结束

相关推荐