我的情况是,我需要根据页面是否使用特定模板,在小部件中提供页面下拉列表。换句话说,对于使用模板“Foo”的所有页面,获取帖子ID。
我已经对小部件的其余部分进行了编码,但我使用了一个输入字段来输入页面ID(这可能会让非技术用户感到混乱,必须找出要使用的页面ID)-我更愿意使用特定模板提供一个带有页面标题的选择框。
我已尝试使用以下内容获取WP\\U查询对象:
$the_query = new WP_Query(array(
\'meta_key\' => \'_wp_page_template\',
\'meta_value\' => \'templates/_partner.php\'
));
元值是正确的(对应于数据库中的2个条目),但我在小部件页面上没有得到任何结果。选择框为空。
您不能从小部件调用WP\\u查询,或者我需要在其他地方寻找此解决方案吗?
UPDATE我检查了运行此命令的SQL的$the\\u query->请求,它没有返回任何行。结果是我在查询中缺少了“post\\u type”=>“page”。
最合适的回答,由SO网友:Michal Mau 整理而成
默认情况下,WP\\u查询仅通过帖子。
尝试添加page
作为您的帖子类型:
$the_query = new WP_Query(array(
\'post_type\' => \'page\', /* overrides default \'post\' */
\'meta_key\' => \'_wp_page_template\',
\'meta_value\' => \'templates/_partner.php\'
));
请参见:
WP_Query - Type Parameters
SO网友:Ahmad M
您可以使用wp_dropdown_pages()
要直接创建要显示的页面的下拉列表,请执行以下操作:
$args = array(
\'name\' => \'_partner_page\', // "name" attr of the <select> element
\'id\' => \'partner-page\', // id attr of the <select> element
\'hierarchical\' => 1, // set to 0 for flat display
\'echo\' => 1, // set to 0 to return
\'selected\' => $post->ID, // ID of the option with "selected" attr, set to 0 to disable
\'meta_key\' => \'_wp_page_template\',
\'meta_value\' => \'templates/_partner.php\'
);
wp_dropdown_pages($args);
你可以去很多地方
wp_dropdown_pages()
. 除了上面的那些
codex page 也可以传递上列出的任何参数
get_pages()
功能,如
wp_dropdown_pages()
使用
get_pages()
检索将显示为下拉列表的页面列表。