用CSS隐藏它们是有问题的,因为它们仍然会通过网络发送,并且仍然会向任何查看源代码的人、出于任何原因禁用CSS的人(例如盲用户-CSS只会让他们慢下来,没有真正的好处)以及黑客脚本等暴露可能是敏感信息的信息。
不,我们需要一种方法,允许将菜单项添加到引用页面或帖子的菜单中,但如果这些菜单项所引用的页面或帖子已完全公开发布,则只能通过网络显示或发送这些菜单项。非草稿、非挂起、非私有、非计划(直到计划时间过去),当然也不是垃圾。
这是我在另一个地方找到的一个解决方案,我做了一些修改(添加到theme的functions.php
):
function exclude_draft_nav_items( $items, $menu, $args )
{
global $wpdb;
//add your custom posttypes to this array
$allowed_posttypes = array( \'post\', \'page\' );
$sql = "SELECT ID FROM {$wpdb->prefix}posts WHERE (post_status!=\'publish\') AND ID=%d && post_type=%s";
foreach ( $items as $k => $item )
{
if( in_array($item->object, $allowed_posttypes) )
{
$query = $wpdb->prepare( $sql, $item->object_id, $item->object );
$result = $wpdb->get_var( $query );
if( $result ) unset($items[$k]);
}
}
return $items;
}
add_filter( \'wp_get_nav_menu_items\', \'exclude_draft_nav_items\', 10, 3 );