将变量作为数组从复选框表单发送到另一个页面

时间:2017-10-30 17:41:41

标签: php wordpress forms custom-wordpress-pages

我在下面的代码中需要一些帮助。我想解析来自custom_field(tech_spec_table)的信息,该信息包含一个包含博客/产品的html标签的表格(例如技术规格),只有在用户检查了特定产品/产品并通过表格提交(带有按钮)之后博客员额。我创建了一个页面" comparison-page.php"作为模板页面,并尝试链接此页面上的表单的操作。 screenshot

// check if we got posts to display:
if (have_posts()) :

echo "<form method='post' action='<?php bloginfo('template_url'); ?>/comparison-page.php' >";
    while (have_posts()) : the_post();

      //the post

   echo "<article class='"....  >";
   echo "<input type='checkbox' name='comparison[]' />";

     //the post

$post_loop_count++;
    endwhile;

        echo "<input type='submit' name='submit' value='Submit'/>";
        echo "</form>"; 

comparison-page.php文件位于以下自定义主题中:wp-content / themes / custom-theme。 这是comparison-page.php

的代码
<?php 
/* Template Name: comparison-page */ 
?>

<?php get_header(); ?>

<div id="primary" class="content-area">
    <main id="main" class="site-main" role="main">
        <?php

           if(isset($_POST['submit'])){    //to run PHP script on submit

   if(!empty($_POST['comparison'])){
     // Loop to store and display values of individual checked checkbox.
     foreach($_POST['comparison'] as $data_specs){

      echo $data_specs."</br>";

    $data_specs = get_post_meta(get_the_ID(), 'tech_specs_table', true);
    $dom = new domDocument;

    @$dom->loadHTML($data_specs);
    $dom->preserveWhiteSpace = false;
    $tables = $dom->getElementsByTagName('table');

    $rows = $tables->item()->getElementsByTagName('tr');

    foreach ($rows as $row) {
        $cols = $row->getElementsByTagName('td');
        echo $cols[];
        }

    }
}
}       
        ?>

    </main><!-- .site-main -->



</div><!-- .content-area -->


<?php get_footer(); ?>

虽然当我点击按钮导致找不到404时 1)我该怎么做才能使路径不可见并正确连接到页面? 2)变量&#34;比较&#34;保存表单中的所有信息,以便我可以获取post_meta信息并在比较页面中进行操作?

2 个答案:

答案 0 :(得分:1)

所以你的问题是WordPress不能那样工作。您无法将数据提交到这样的主题文件。

您需要做的是让您提交的页面使用自定义页面模板,并使用您的代码在新的自定义页面模板上处理表单。

因此,您正在考虑使用包含自定义模板的两个自定义页面: 1)表格 2)提交处理器

表单的操作应该带您到提交处理器。

答案 1 :(得分:1)

当您定义表单标记时,错误似乎在第3行。你不能在字符串中打开php标签!相反,您可以使用bloginfo运算符将字符串与.函数的结果连接起来。