用于允许自由文章的自定义字段;不再起作用

时间:2019-11-12 作者:JC Corbin

拥有一个新闻网站,直到最近,有两种方法可以合法地进入付费墙。首先是一个用户/通行证,该用户/通行证根据远程数据库进行了检查,并返回了“是”或“否”的身份验证值。这部分仍然有效。另一种方法是用一个名为“免费故事”的自定义字段指定帖子或页面。免费故事的值为1或零。是的,我是免费的。零是,用户/身份验证系统无效。

这个网站很旧。会话身份验证用于某种原因,我不知道。将“自由故事”值设置为true、1或yes应允许其完全可见。否则,只有用户/通行证才能工作。自定义字段下的“accordion”项目列表说明了我所看到的一些古老插件在数据库中的损坏。免费故事可能会显示,也可能不会显示,供用户选择,但用户始终可以创建它并将其设置为其pref值。

我不知道如何调试这个。我对这件事一无所知,我的目的是不让事情变得更糟$post id是创建时在WP中分配给帖子的int值或帖子编号。如果不更改永久链接设置,url将以该值结尾。

在下面发布的代码中,只有最初的10-25行似乎与免费故事自定义字段相关。其余部分涉及如何处理来自用户/通行证系统的身份验证和取消身份验证。

这个系统已经运行多年了。我继承了这段代码,只修改了AUTH端以加快用户的登录速度,这已经与免费故事一起使用了2年。

我的猜测是,作为一个新手,当下面的代码查找免费故事时,它的价值没有传递到post meta,也没有被识别为1。

事实上,当用户分配免费故事字段时,会出现一系列针对某种“手风琴”系统的选择。创建正确值的新字段似乎不起作用。自定义字段的新插件也不起作用。见附件:

What one sees if clicking on Custom Field dropdown list. These are NOT our custom fields

这个page.php 主题模板包含以下代码;以下是整个php文件:

    <?php get_header(); ?>

    <div id="content" class="archive">
<!-- Newzware Protection Code -->   

    <?php 
        $key = \'Free Story\';
        $themeta = get_post_meta($post_id, $key, TRUE);
        if($themeta != \'\') {
        $free_story = 1; 
        }
     ?>

    <?php if($_SESSION[\'auth\'] == \'1\' OR $free_story == \'1\') { ?>   

    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>

    <div class="post" id="post_<?php the_ID(); ?>">

    <span id="map"><a href="<?php echo get_option(\'home\'); ?>/"><?php _e(\'Home\',\'arthemia\');?></a> &raquo; <?php the_title(); ?></span>

    <h2 class="title"><?php the_title(); ?></h2>

        <div class="entry" style="padding-top:15px;">
        <?php the_content(__(\'<p>Read the rest of this page &raquo;</p>\',\'arthemia\')); ?>

        <?php wp_link_pages(array(\'before\' => __(\'<p><strong>Pages:</strong>\',\'arthemia\'), \'after\' => \'</p>\', \'next_or_number\' => \'number\')); ?>

        </div>

    </div>

    <?php endwhile; endif; ?>


    <?php } else { ?>
                        <div class="panel panel-default" style="margin-top:10px;"><div class="panel-heading" style="background:#0079BD;" "color:#fff;" "text-align:center;"> Subscribe To The Journal</div><div class="panel-body">  <p style="text-align:center">&nbsp;
      </p>
           <div > If you are already registered with The Journal/ UpstateToday.com, please <a href=\'https://seneca.newzware.com/ss70v2/seneca/common/template.jsp?nwmodule=registration&nwpage=registration&returnPage=https://upstatetoday.com/utloginnw/&rpage=https://upstatetoday.com/newzware_auth.php\' class=class=\'SumaPostContent\'><b class="text-danger"> click here </b></a> to log in and continue reading. If not, <a href=\'https://seneca.newzware.com/ss70v2/seneca/common/template.jsp?nwmodule=nonsubscribers&nwpage=nonsubstart\'><b class="text-danger"> please click here for subscription options </b>. </a>.</p></div>
</div></div>

    <!--    <div class=\'panel panel-default\' style=\'margin-top:10px;\'> <div class=\'panel-heading\' style=\'background:#0079BD; color:#fff; text-align:center;\'>Subscribe To The Journal</div><div class=\'panel-body\'>  <p style=\'text-align:center\'>
        If you are already registered with The Journal/ UpstateToday.com, please <a href=\'https://seneca.newzware.com/ss70v2/seneca/common/template.jsp?nwmodule=registration&nwpage=registration&returnPage=https://upstatetoday.com/utloginnw/&rpage=https://upstatetoday.com/newzware_auth.php\' class=class=\'SumaPostContent\'><b class="text-danger"> click here </b></a> to log in and continue reading. If not, <a href=\'https://seneca.newzware.com/ss70v2/seneca/common/template.jsp?nwmodule=nonsubscribers&nwpage=nonsubstart\'><b class="text-danger"> please click here for subscription options </b>. </a>.</p></div></div>
    -->
    <?php } ?>


    <!-- End Newzware Protection Code --> 


    </div>

<?php get_sidebar(); ?>
<?php get_footer(); ?>

Free Story and its value as entered on some stories

1 个回复
SO网友:JC Corbin

首先@TomJNowell是百分之百正确的。这是PHP和我对它的无知。

从一年前的备份中输入以下代码似乎已经解决了问题,如果不是需要进行的底层改进的话:

<?php 
    $key = \'Free Story\';
    $themeta = get_post_meta($post->ID, $key, TRUE);
    if($themeta != \'\') {
    $free_story = 1; 
    }
 ?>

<?php if($_SESSION[\'auth\'] == \'1\' OR $free_story == \'1\' ) { ?>
请注意,前面的$post\\u id已替换为调用当前帖子/页面id的正确代码:$post->id还请注意,$key之后的真值显示为要求meta遍历,直到它找到我想要的$key(免费故事),然后对该值进行操作。我还是不明白如果(@themeta!=“”){$free\\u story=1;}正在说。是不是说如果themeta为Null或为空,请将$free\\u story设置为=1?无论如何,这对我来说是一个学习的任务。汤姆,谢谢你的耐心!