我为我的Wordpress网站编写了以下功能:
add_shortcode('publish_party', 'party_contact_suppliers');
function party_contact_suppliers(){
$alerts = new WP_Query (array (
'post_type' => 'alert',
'post_status' => 'publish'));
echo '<ol>';
foreach($alerts as $alert) {
echo '<li>'.$alert->ID.'</li>';
}
echo '</ol>';
}
我有两个已发布的警报。但这是我得到的输出:
我进入phpMyAdmin进行检查,并且数据库中只有3条警报,其中2条状态为“发布”。它们是帖子ID 600和帖子ID 599。
我原本希望看到两个项目,为什么会有44个,并且只显示一个ID?
答案 0 :(得分:0)
您返回的$alert
对象包含缺少的postdata作为属性。这意味着您应该尝试像$alert->post->ID;
这样访问它,而不是$alert->ID;
遵循一般WP_Query docs的示例循环是一个更好的主意,方法是使用while
循环并在循环内获取postdata(the_post()
),然后再跟随wp_reset_postdata()
。然后,您也可以使用get_the_ID()
函数来访问ID。
add_shortcode('publish_party', 'party_contact_suppliers');
function party_contact_suppliers(){
$alerts = new WP_Query (array (
'post_type' => 'alert',
'post_status' => 'publish'));
echo '<ol>';
while($alerts->have_posts()) {
$alerts->the_post();
echo '<li>'.get_the_ID().'</li>';
}
echo '</ol>';
wp_reset_postdata();
}
答案 1 :(得分:0)
{
"success": true,
"message": "It is done",
"data": {
"id": 123,
"value": "string",
"object":{
"object_value":"I'm an object now"
},
"array_object":[ {"key1":"value1"},{"key2":"value2"},{"key3":"value3"} ]
},
"string": "Hello World"
}