如何仅向发布的用户和管理员显示帖子?

时间:2017-09-23 02:18:12

标签: php wordpress

是否有办法限制哪些人可以在一个特定类别中查看帖子,以便只有发布该帖子的用户才能看到它们?

我已经设置了一个自定义帖子类型,其中包含自己的模板,自定义帖子状态和新类别。我希望此类别中的帖子仅对发布它和管理员的用户可见。

我尝试在下面的代码中执行此操作,但它不起作用 - 只有管理员才能看到帖子。

<?php
/**
 * The template for displaying all single posts.

 */

get_header(); ?>
<?php 
          $user_id = the_author_meta('ID');
          $admin_ch = get_user_by('id', 1);
          $cu_user = get_current_user_id();

      if($cu_user == $user_id || $cu_user == $admin_ch) {
         while ( have_posts() ) : the_post(); ?>
          <div class="container-block">
          <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
            <div id="sh">
            <header class="entry-header">
                <?php the_title( '<h1 class="entry-title">', '</h1>' ); ?>
                <?php if ( 'post' === get_post_type() && $meta = screenr_posted_on( false ) ) : ?>
                <?php
                endif; ?>

                <?php
                  if ( ! get_theme_mod( 'disable_featured_image', 0 ) ) {
                      if (has_post_thumbnail()) {
                          echo '<div class="entry-thumb">';
                          the_post_thumbnail('screenr-blog-list');
                          echo '</div>';
                      }
                  }
                ?>

            </header><!-- .entry-header -->
          </div>

                <div class="entry-meta">
                <span class="p-date">
                  On
                    <?php $post_date = get_the_date( 'l F j, Y' ); echo $post_date; ?>
                  By
                <?php $user_name = the_author_meta( 'display_name', $ID ); echo $user_name; ?>
              </span>
                </div><!-- .entry-meta -->

            <div class="entry-content">
                <?php
                    the_content( sprintf(
                        /* translators: %s: Name of current post. */
                        wp_kses( esc_html__( 'Continue reading %s', 'screenr' ), '<span class="meta-nav">&rarr;</span>' ),
                        the_title( '<span class="screen-reader-text">"', '"</span>', false )
                    ) );

                    wp_link_pages( array(
                        'before' => '<div class="page-links">' . esc_html__( 'Pages:', 'screenr' ),
                        'after'  => '</div>',
                    ) );
                ?>
            </div><!-- .entry-content -->
           <?php show_publish_button();  ?>
          </article><!-- #post-## -->
        </div>

                <?php endwhile; // End of the loop.
} else {
  echo "You can't show this";
}


         ?>
<?php get_footer(); ?>

1 个答案:

答案 0 :(得分:0)

它不会让我留下这个评论,但在这一行:

  if($cu_user == $user_id || $admin_ch) {

将其更改为:

  if($cu_user == $user_id || $cu_user == $admin_ch) {

正如它所写的,在或之后,没有争论。你也需要在那里发表一个论点。

正确的功能是:

get_the_author_meta('ID')