如何使CPT在前端不可见?

时间:2013-06-06 作者:Gazillion

下面是我如何定义CPT的:

$args = array(
        \'labels\' => $labels,
        \'public\' => FALSE,
        \'show_ui\' => TRUE,
        \'capability_type\' => SNG_CAP_SUPPORT,
        \'hierarchical\' => FALSE,
        \'supports\' => array(
            \'title\', 
            \'editor\'
        ),
        \'menu_icon\' => SNG_PLUGIN_URL . \'/images/admin-support.png\',
        \'rewrite\' => FALSE,
        \'has_archive\' => FALSE );
    register_post_type( SNG_SUPPORT_POSTTYPE, $args );
基本上,当用户创建这种post\\u类型的帖子时,会有一条成功消息,上面写着“查看这篇帖子”,这会导致我的网站的前端。com/?sng支持=测试-8。我想删除此消息和链接,但我没有寻找CSS修复。一定有办法让这一切顺利吗?我试着玩ARG,但我似乎不知道我做错了什么。。。

本质上,我不想从URL或前端访问帖子,除非我专门查询它们。

非常感谢您的帮助!:)

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

我想你至少部分想要的是alter the submission update messages, 可能除了@toscho的代码之外。

function kill_message($messages) {
  global $post_type;
//   var_dump($messages); die;
  if (\'your-cpt-slug\' == $post_type) {
    // alter your message strings
  }
  return $messages;
}
add_filter( \'post_updated_messages\', \'kill_message\' );
如果你var_dump 这个$messages 变量消息所代表的内容非常明显。你想怎么写就怎么写。

SO网友:fuxia

这是一个已知的错误:#17609 \'View post\' link shown even when post type can\'t be viewed on the front-end.

要修复它,请过滤get_sample_permalink_html 并测试post类型属性:

add_filter( \'get_sample_permalink_html\', function( $html, $post_id )
{
    $post_type = get_post_type( $post_id );
    $object    = get_post_type_object( $post_type );

    if ( $object->public && $object->publicly_queryable )
        return $html;

    add_filter( \'get_shortlink\', function( $shortlink, $id ) use ( $post_id )
    {
        return $id == $post_id ? \'\' : $shortlink;
    }, 10, 2 );

    return \'\';

}, 10, 2 );

结束

相关推荐