如何从帖子类型创建一个包含自定义计算的概述页面?

时间:2017-12-20 作者:jsmars

我已经使用Pods框架创建了一些自定义帖子类型,但是无论Pods如何,我的问题的解决方案都应该是相同的。我的自定义类型是event, team, achievement, achievementunlock. 每个teamachievement 属于event, 每个team 分配了多个用户,每个用户都可以发布achievementunlock 并从列表中选择achievements.

我想创建一个页面,显示哪些成就已被“解锁”的概述,即用户发布了一篇achievementunlock帖子。

像这样的

Event1Name
                  | Team1            |Team2
                  | Bob   | Steve    | Scott  | Mary  |
Achievement1Name  | View  | -        | -      | View  |
Achievement2Name  | -     | View     | -      | View  |
Achievement3Name  | -     | -        | View   |       |
Total             | 1     | 1        | 1      | 2     |
Team Total        | 2                | 3              |

Event2Name
.....
我需要能够迭代所有对象并查看它们的属性。一、 e.安achievement 帖子是由Bob发布的,我需要能够看到team 他属于event 那个team 属于等。

如何获取可以轻松迭代的对象,以及如何在wordpress中设置这样的页面?谢谢

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

虽然拉希莱什为我指出了正确的方向,并投了更高的票,但我觉得我可以提供一个更完整的答案,因为现在我已经开始运作了。

首先创建一个新的PHP模板文件,创建一个页面并将其连接到该模板,然后将该页面添加到菜单中。

在该文件中,您现在可以使用$wpdb 拉吉莱什建议的对象。您可以访问任何wordpress表。每个帖子上的数据都在帖子中,通过Pods框架添加的任何内容都可以在Posteta中找到,其中每个项目都有一个postID和meta\\u键,该键在您的Pods设置中设置。

例如:

$posts = $wpdb->get_results(
    " SELECT * FROM $wpdb->posts WHERE 
     (post_type = \'event\' OR
     post_type = \'team\'");
注意:这将包括所有帖子,因此最好检查包括一些检查,以避免SQL查询中的垃圾项目和草稿,例如:

post_status <> \'draft\' AND
post_status <> \'auto-draft\' AND
post_status <> \'trash\'
etc...
一些基本数据字段直接使用名称,而关系和媒体字段使用_pods_ 前缀关系将是保存其合作伙伴ID的数组。

$meta = $wpdb->get_results("SELECT * FROM $wpdb->postmeta WHERE 
                            meta_key = \'_pods_unlocks\' OR
                            meta_key = \'achievement\' OR
如果您的设置和我的一样有点复杂,那么构建一种面向对象的方法并为每个pod创建对象可能是一个好主意。

现在,您已经获得了对所有数据的访问权限,可以使用自定义代码以任何适合的方式输出数据,例如:

usort($event->Teams, "sortTeams");
echo "<h3>";
for ($i = 0; $i < count($event->Teams); $i++)
{
    $team = $event->Teams[$i];
    echo ($i + 1) . ": $team->Title ($team->Score)<br/>";
}
echo "</h3>";
希望这能帮助一些人!

SO网友:Rajilesh Panoli

似乎你在要求一个完整的自定义函数,

要添加菜单,可以使用此选项。

function wpdocs_register_my_custom_menu_page() {
    add_menu_page(
        __( \'Custom Menu Title\', \'textdomain\' ),
        \'custom menu\',
        \'manage_options\',
        \'myplugin/myplugin-admin.php\',
        \'custom_callback_function\',
        plugins_url( \'myplugin/images/icon.png\' ),
        6
    );
}
add_action( \'admin_menu\', \'wpdocs_register_my_custom_menu_page\' );

function custom_callback_function(){

echo \'Here is my page contents\';

}

https://developer.wordpress.org/reference/functions/add_menu_page/

您可以使用$wpdb查询类进行自定义功能

https://codex.wordpress.org/Class_Reference/wpdb

希望这能给你一些基本的想法。

结束

相关推荐