Php Wordpress成员访问自定义页面/模板

Php Wordpress成员访问自定义页面/模板,php,wordpress,Php,Wordpress,我在我的wordpress中制作了一些自定义模板,并使用它构建了2个页面。然后我尝试了访问控制的成员插件。它可以在页面上工作,但仍然在该页面上显示我的自定义PHP代码。是否有更好的插件,或者我的自定义php是否应该包含wordpress的som标准代码,以包含在访问控制中 <?php /* Template Name: Storfanger_indberet */ ?> <?php if ( ! defined( 'ABSPATH' ) ) exit; get_header(

我在我的wordpress中制作了一些自定义模板,并使用它构建了2个页面。然后我尝试了访问控制的成员插件。它可以在页面上工作,但仍然在该页面上显示我的自定义PHP代码。是否有更好的插件,或者我的自定义php是否应该包含wordpress的som标准代码,以包含在访问控制中

<?php /* Template Name: Storfanger_indberet */ ?>
<?php
if ( ! defined( 'ABSPATH' ) ) exit;

get_header(); ?>

<div id="primary" <?php generate_content_class();?>>
    <main id="main" <?php generate_main_class(); ?>>
        <?php do_action('generate_before_main_content'); ?>
        <?php while ( have_posts() ) : the_post(); ?>

            <?php get_template_part( 'content', 'page' ); ?>

            <!--My code begin -->

            <?php
If($_POST['Submit'])
{
    // run validation if you're not doing it in js
    global $wpdb;

    $medlemsnr=$_POST['medlemsnr'];
    $navn=$_POST['navn'];
    $baadnavn=$_POST['baadnavn'];
    $art=$_POST['art'];
    $vaegt=$_POST['vaegt'];
    $billede=$_POST['billede'];

    if($wpdb->insert(
                        'ct_storfanger_indberetninger',
                        array(
                        'Medlemsnr' => $medlemsnr,
                        'navn' => $navn,
                        'bådnavn' =>$baadnavn,
                        'art' =>$art,
                        'vægt' =>$vaegt,
                        'billede' =>$billede
                        )
                    ) == false) wp_die('Der var en fejl i indsendelsen. Kontakt venligst webmaster'); else echo 'Tak for din indsendelse. Den vil fremgå af listen så snart den er godkendt af juryen!<p />';
?>
<?php
}
else // else we didn't submit the form, so display the form
{
?>

<form action="" method="post" id="form">
<table style="border:none;">
                <tr>
                <td style="border:none;width:25%">Medlemsnr</td>
                <td style="border:none;"><input name="medlemsnr"     type="text" value="" /></td>
                </tr>
            <tr>
            <td style="border:none;">Navn</td>
            <td style="border:none;"><input name="navn" type="text" value="" /></td>
            </tr>
            <tr>
            <td style="border:none;">Bådnavn</td>
            <td style="border:none;"><input name="baadnavn" type="text" value="" /></td>
            </tr>
            <tr>
            <td style="border:none;">Art</td>
            <td style="border:none;">
                <?php 
                global $wpdb;
                $retrieve_data = $wpdb->get_results( "SELECT Art FROM ct_storfanger_arter");
            ?>
            <SELECT NAME="art"><option value=""></option>
            <?php
                foreach ($retrieve_data as $retrieved_data){ 
                    echo "<option value='" . $retrieved_data->Art . "'>" . $retrieved_data->Art . "</option>";
                }
            ?>
            </SELECT></td>
            </tr>
            <tr>
            <td style="border:none;">Vægt i gram</td>
            <td style="border:none;"><input name="vaegt" type="text" value="" /> gram</td>
            </tr>
            <tr>
            <td style="border:none;">Billede</td>
            <td style="border:none;"><input name="billede" type="file" value="" /></td>
            </tr>
            </table>
            <table style="border:none;">
            <tr>
            <td style="border:none;"><input type="submit" name="Submit" id="formsubmit" value="Indsend" /></form></td>
            </tr>
            </table>

            </form>
<?php
    } // end else no post['submit']
?>              

            <!--My code ends -->

            <?php
            // If comments are open or we have at least one comment, load up the comment template
            if ( comments_open() || '0' != get_comments_number() ) : ?>
                <div class="comments-area">
                    <?php comments_template(); ?>
                </div>
            <?php endif; ?>

        <?php endwhile; // end of the loop. ?>
        <?php do_action('generate_after_main_content'); ?>
    </main><!-- #main -->
</div><!-- #primary -->
<?php 
do_action('generate_sidebars');
get_footer();
?>

>
问题信噪比
纳文
Bådnavn
艺术
像这样的东西

您可以将此代码放在自定义主题模板的开头以限制访问

<?php /* Template Name: Admin/Editor access */

      if(!is_user_logged_in())$getOut=true;//Check if visitor is even logged in
      elseif(current_user_can('editor') || current_user_can('administrator')){//Is user administrator or editor?
         $getOut=false;//User can stay and view the content (even process scripts)
      }
      if($getOut){//Should the user be kicked out?
      echo"<html><body>";
         echo "<script type='text/javascript'>alert('You don\'t have permission to do that');"
              ."window.location.href = '/';</script></body></html>";//Throw out warning
         exit();//Anything below won't be processed
      }
   get_header(); ?>

像这样的

您可以将此代码放在自定义主题模板的开头以限制访问

<?php /* Template Name: Admin/Editor access */

      if(!is_user_logged_in())$getOut=true;//Check if visitor is even logged in
      elseif(current_user_can('editor') || current_user_can('administrator')){//Is user administrator or editor?
         $getOut=false;//User can stay and view the content (even process scripts)
      }
      if($getOut){//Should the user be kicked out?
      echo"<html><body>";
         echo "<script type='text/javascript'>alert('You don\'t have permission to do that');"
              ."window.location.href = '/';</script></body></html>";//Throw out warning
         exit();//Anything below won't be processed
      }
   get_header(); ?>



WordPress的大多数成员插件都会隐藏来自WP standard loop等的内容。您那里的自定义php代码可能需要包装在成员插件的自定义php函数中,以管理其访问/可见性控制?我听到了,但不太明白:)我需要在哪里做点什么?您可以共享页面吗,如果我理解正确,您正在通过自定义php输出某些内容,即使您通过成员插件将页面设置为私有页面,也会显示这些内容,是吗?是的,确实如此。这是我的自定义模板页面。当我没有登录并转到这个页面时,它说这是禁止的,我必须登录,但在检查用户是否没有登录并回显警告后,仍然显示了我的PHP代码和html表单。你不能退出()PHP进程并结束页面呈现吗?(如果检查是在页面呈现之前完成的,否则检查本身就没用了)-我会发出警告,单击“确定”后,它会将访问者重定向回主页。WordPress的大多数成员插件将隐藏来自WP standard loop等的内容。您在那里的自定义php代码,可能需要包装在成员插件的自定义php函数中以管理其访问/可见性控制?我听到了,但不太明白:)我需要在哪里做点什么?你能分享页面吗,如果我理解正确,您正在通过自定义php输出某些内容,即使您通过成员插件将页面设置为私有页面,也会显示这些内容,是吗?是的,确实如此。这是我的自定义模板页面。当我没有登录并转到这个页面时,它说这是禁止的,我必须登录,但在检查用户是否没有登录并回显警告后,仍然显示了我的PHP代码和html表单。你不能退出()PHP进程并结束页面呈现吗?(如果检查是在页面呈现之前完成的,否则检查本身就没用了)-我会发出警告,在单击“确定”后,它会将访问者重定向回主页。我还没有尝试过这一点,但在用户未登录和登录时,除了警告和重定向之外,不会呈现任何内容,他必须是角色编辑器或管理员。你可以简单地将其变成一个函数,然后再将其放在wp主题的任何地方。好吧。。。代码不能按原样工作。我只得到一张空白页。但是我用这个插件来控制我的访问。据我所知,这段代码是“它自己的”访问控制,对吗?不可能让/some插件控制对自定义页面的访问吗?@KristianC正确,这不需要任何插件。很可能有,但我不建议使用它们。。我会在我自己的网站上尝试代码,看看它是否有效。谢谢。那就行了。非常感谢你。我很高兴。非常感谢。我还没有尝试过这个,但这不应该提供任何其他警告和重定向,以防用户未登录,登录时,他必须是角色编辑器或管理员。你可以简单地将其制作成一个函数,然后再将其放在wp主题的任何位置。嗯。。。代码不能按原样工作。我只得到一张空白页。但是我用这个插件来控制我的访问。据我所知,这段代码是“它自己的”访问控制,对吗?不可能让/some插件控制对自定义页面的访问吗?@KristianC正确,这不需要任何插件。很可能有,但我不建议使用它们。。我会在我自己的网站上尝试代码,看看它是否有效。谢谢。那就行了。非常感谢你。我很高兴。谢谢。