强制与自定义帖子类型关联的所有帖子都是私有的

时间:2010-12-06 作者:NetConstructor.com

有人知道向函数添加代码的方法吗。php文件将自动强制属于自定义帖子类型的所有帖子为“私有”和/或“密码保护”,并设置默认密码?

我特别指的是创建新帖子或编辑现有帖子,从而确保属于特定自定义帖子类型的帖子永远不会更改。。。

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

你可以钩住save_post, wp_insert_postwp_insert_post_data 在插入或保存post对象之前对其进行修改。

使用save_postwp_insert_post 回调需要声明两个参数,并将post对象作为第二个传入变量接收。。(我向你们展示了替代品,死亡医学者的例子很好)。

用于设置特定帖子类型的默认值new 您可以通过挂接使用小技巧的帖子default_content (尽管default_title 也可以),就像我举的例子一样here.

您基本上需要两个函数,一个用于在保存/插入时修改post对象,另一个用于设置默认post对象值,下面是两个必要函数的示例(再次注意,您可以将我的save\\u post回调替换为HeadMedic已经给出的示例)。

add_action( \'save_post\', \'check_type_values\', 10, 2 );

function check_type_values( $post_id, $post ) {

    if( $post->post_type )
        switch( $post->post_type ) {
            case \'my_custom_type\':
                $post->post_status = \'private\';
                $post->post_password = ( \'\' == $post->post_password ) ? \'some_default_when_no_password\' : $post->post_password;
            break;
        }   
    return;
}

add_filter( \'default_content\', \'set_default_values\', 10, 2 );

function set_default_values( $post_content, $post ) {

    if( $post->post_type )
        switch( $post->post_type ) {
            case \'my_custom_type\':
                $post->post_status = \'private\';
                $post->post_password = \'some_default_password\';
            break;
        }
    return $post_content;
}
希望这有助于。。。

SO网友:TheDeadMedic
function force_type_private($post)
{
    if ($post[\'post_type\'] != \'my_post_type\' || $post[\'post_status\'] == \'trash\')
        return $post;

    $post[\'post_password\'] = \'my password\';
    $post[\'post_status\'] = \'private\';
    return $post;
}
add_filter(\'wp_insert_post_data\', \'force_type_private\');
SO网友:hdavis84

难道我们不能为自定义帖子类型创建一个模板页面,并检查用户是否已登录,以及用户是否是某个角色吗?举个例子,您想拥有一个只供管理员查看的帖子类型:

<?php if ( is_user_logged_in() && is_admin() ) : if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
  <?php the_content(); ?>
<?php endwhile; endif; endif; ?>

结束

相关推荐

如何在管理中用图标替换“Password Protected”文本

在Wordpress中,每当帖子受到密码保护时,后端管理区域都会在帖子标题后添加粗体“-密码保护”文本。我正在寻找的是一种删除此文本的方法,而是让它使用一个图标(下面的链接),该图标应附加在标题文本之前。如何做到这一点?我想使用Aesthetica Icon Set 通过http://dryicons.com: