我在下面的代码中需要一些帮助。我想解析来自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信息并在比较页面中进行操作?
答案 0 :(得分:1)
所以你的问题是WordPress不能那样工作。您无法将数据提交到这样的主题文件。
您需要做的是让您提交的页面使用自定义页面模板,并使用您的代码在新的自定义页面模板上处理表单。
因此,您正在考虑使用包含自定义模板的两个自定义页面: 1)表格 2)提交处理器
表单的操作应该带您到提交处理器。
答案 1 :(得分:1)
当您定义表单标记时,错误似乎在第3行。你不能在字符串中打开php标签!相反,您可以使用bloginfo
运算符将字符串与.
函数的结果连接起来。