我正在将一个单独的电子商务CMS集成到wordpress主题中,使用一些页面模板,如购物篮、搜索和结账页面。
到目前为止,这一切都很顺利。然而,有几个动态页面,我通常会制作一个posttype。php模板,但不能像在本例中我不能,因为Wordpress不“知道”,因为数据来自电子商务CMS。例如,产品详细信息页面或产品类别搜索页面。
我的解决方案是创建一个名为product details的模板,并为其创建一个页面。在这个模板中,实际的wordpress页面数据被忽略,而是从电子商务CMS读取数据。
我的直觉是,这不是最好的做法,但如果没有编写一个完整的wordpress插件集成电子商务系统,这是我能想到的最好的方法。
TL;DR
这给我留下的问题是,如果管理员删除该页面,或取消分配模板,商店就会崩溃。所以,我想隐藏这些页面,以帮助防止意外删除或编辑(页面内容对他们来说并不重要)。
是否有办法从wp admin的“所有页面”菜单中隐藏一些页面,除非单击自定义过滤器(例如“系统页面”)?
最合适的回答,由SO网友:Steven Jones 整理而成
您可以使用pre_get_posts() 这将在运行查询之前对其进行调整。因此,我们可以从查询中排除页面。
function wpse_hide_special_pages($query) {
// Make sure we\'re in the admin and it\'s the main query
if ( !is_admin() && !is_main_query() ) {
return;
}
// Set the ID of your user so you can see see the pages
$your_id = 1;
// If it\'s you that is logged in then return
if ($your_id == get_current_user_id()) {
return;
}
global $typenow;
// Only do this for pages
if ( \'page\' == $typenow) {
// Don\'t show the special pages (get the IDs of the pages and replace these)
$query->set( \'post__not_in\', array(\'8\', \'15\', \'14\', \'22\') );
return;
}
}
add_action(\'pre_get_posts\', \'wpse_hide_special_pages\');
希望这有帮助。