【问题标题】:How to get user's published / pending post status only (Wordpress and PHP)如何仅获取用户的已发布/待处理帖子状态(Wordpress 和 PHP)
【发布时间】:2017-10-03 23:58:33
【问题描述】:

一句话:当一个免费用户试图编辑他发布的帖子时,我想使用“获取帖子状态”来发布或挂起,这样我就可以隐藏一些 div。

我的编码技能非常基础,但我正在开发一个人们可以创建自定义帖子的 Wordpress 网站。

有两种类型的会员资格:免费或高级。我试图阻止免费会员在他们的帖子发布或待处理(如果可能)后编辑他们帖子的特定部分。他们可以在草稿或付费时进行编辑。

请注意,用户通过我创建的特定页面 (id = 6) 创建帖子可能很重要,而不是通过 wp 后端。

现在,下面的代码似乎在已发布和草稿帖子中都有效。我希望代码仅适用于用户已发布或待处理的帖子。

这是我尝试使用的代码:

<?php if (($usermeta['_checkbox_premium_user'][0] != "yes") && ($_GET['edit'] == 'true') && ( get_post_status ( $ID ) == 'publish' )) { ?>

<div class="mydiv">content to show</div> <?php } else { ?>   <div class="mydiv2">content to hide</div> <?php } ?>

任何帮助将不胜感激!

【问题讨论】:

  • 您想在用户发布帖子后隐藏内容编辑器吗?
  • Dolatabadi,我可以通过添加 style="display:none;" 来隐藏#mydiv2到 div 但我的问题是顶部的 php 代码可能没有以正确的方式编写。目标是获取用户尝试编辑的帖子的状态,并确保在隐藏 div 之前发布其当前状态。
  • 我们也可以将#mydiv2 视为编辑器。
  • 仍在阅读问题,但在您的 php 示例中,您的 $_GET['pid'] 是否也应包含 '== true ' 语句?由于 php 没有读取 pid 并在该行代码中以相同的方式进行编辑。
  • 我也尝试了 $_GET['pid'] 和 '==true' 语句,但没有任何改变。当用户在他的一篇帖子上单击编辑时,浏览器上的内容如下所示: domainurl/create-a-new-post/?pid=376&edit=true

标签: php wordpress


【解决方案1】:

我想通了:

<?php if (($usermeta['_checkbox_premium_user'][0] != "yes") && ($_GET['edit'] == 'true') && (get_post_status ( $_GET['pid'] ) == 'publish')) { ?>

【讨论】:

    【解决方案2】:

    用户可以查看待处理的 wordpress 帖子

       function allow_pending_listings($qry) {
            $status = get_post_status ( $_GET['eid'] );
            if(is_user_logged_in()){
            $edit_data = get_post($_GET['eid']);    
             if (!is_admin() && $edit_data->post_author == $userdata->ID && $status !='publish' ) {
            $qry->set('post_status', array('publish','pending','draft'));
             }
            }
        }
        add_action('pre_get_posts','allow_pending_listings');
    

    【讨论】:

      猜你喜欢
      • 2021-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-04
      • 2015-09-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多