为每个表单选择创建一个新页面

时间:2013-03-24 作者:naf

我有一个自定义页面模板,它显示一个下拉框,其中包含国家列表。用户选择该框并单击sumbit。页面然后显示该国家/地区的相关详细信息。它还显示存储在数据库中的描述。

以下sql查询用于显示数据。

            $id = mysql_escape_string($_GET[\'id\']);
        $row_RsInt = $wpdb->get_results("SELECT * FROM wp_num_countries",ARRAY_A);
        $totalRows_RsInt = count($row_RsInt);

    <form id="formITFS" name="formITFS" method="post" action="">
                                <select class="itfsDrp" id="country" name="country">
                                    <?php
                                    foreach($row_RsInt as $row_RsInts){
                                        $selected = $_POST[\'country\'] == $row_RsInts[\'countryID\'] ? \'selected="selected"\' : \'\';
                                        echo \'<option value="\'.$row_RsInts[\'countryID\'].\'" \'.$selected.\'>\'.$row_RsInts[\'country\'].\'</option>\';
                                    }
                                    ?>                            
                                </select><input name="imageField2" id="imageField2" src="http://xxxxxxxx/wp-content/themes/responsive/images/rates.png" type="image">
             </form>

<?php
    if($_POST[\'country\'])
        $country_id = $_POST[\'country\'];
    else
        $country_id = 1;

    $countryinfo = $wpdb->get_row("SELECT * FROM wp_num_countries WHERE countryID = ".$country_id);
    ?>  
    <form action="" method="POST" name="form" id="formn">
    <div id="ITFSworks">

<?php echo $countryinfo->desc; ?>
我想为每个国家创建一个单独的页面。页面将包含更多文本。当用户转到这个新页面时,会得到与自定义页面模板相同的布局。

因此,如果我的perma链接是法国页面,我希望下拉列表中预选法国和法国信息,以此类推。。

我如何才能最好地实现这一点。我正在使用最新的wordpress。

最好的方法是什么。

2 个回复
SO网友:ceruleus

我还不能发表评论,所以我将在这里告诉您可以立即更改的内容:

$countryinfo = $wpdb->get_row("SELECT * FROM wp_num_countries WHERE countryID = ".$country_id);

$countryinfo = $wpdb->get_row($wpdb->prepare("SELECT * FROM wp_num_countries WHERE countryID = %d", $country_id));
因为您直接使用$\\u POST变量,所以$wpdb->prepare 将格式化并准备查询字符串。但这段代码对我来说很好(您应该只使用预期的缩进,因为它更容易阅读:))

如果我是你,我会做一个页面,把这个代码放进去。例如,页面国家/地区。php和标题为Countries的页面,slug“Countries”。在这个表单中,输入submit按钮,就这样。此外,我会测试if(isset($_POST[\'country\'])) 而不是if($_POST[\'country\']).

SO网友:s_ha_dum

如果我理解你的意思,如果你想为你的国家创建一个自定义的帖子类型,而不是试图将其与你自己的表一起破解,那么大部分问题都会自动解决。WordPress将为您处理重写。鉴于提供的信息,我认为我无法获得任何接近工作代码的信息,但如果您follow the examples in the Codex 你应该有一个很好的开始。以下是其中之一:

function codex_custom_init() {
  $labels = array(
    \'name\' => \'Books\',
    \'singular_name\' => \'Book\',
    \'add_new\' => \'Add New\',
    \'add_new_item\' => \'Add New Book\',
    \'edit_item\' => \'Edit Book\',
    \'new_item\' => \'New Book\',
    \'all_items\' => \'All Books\',
    \'view_item\' => \'View Book\',
    \'search_items\' => \'Search Books\',
    \'not_found\' =>  \'No books found\',
    \'not_found_in_trash\' => \'No books found in Trash\', 
    \'parent_item_colon\' => \'\',
    \'menu_name\' => \'Books\'
  );

  $args = array(
    \'labels\' => $labels,
    \'public\' => true,
    \'publicly_queryable\' => true,
    \'show_ui\' => true, 
    \'show_in_menu\' => true, 
    \'query_var\' => true,
    \'rewrite\' => array( \'slug\' => \'book\' ),
    \'capability_type\' => \'post\',
    \'has_archive\' => true, 
    \'hierarchical\' => false,
    \'menu_position\' => null,
    \'supports\' => array( \'title\', \'editor\', \'author\', \'thumbnail\', \'excerpt\', \'comments\' )
  ); 

  register_post_type( \'book\', $args );
}
add_action( \'init\', \'codex_custom_init\' );
用“国家”替换“书籍”的引用,您就可以上路了。补充普通岗位数据Custom Meta Fields, 可能地registering your own metaboxes 为了方便起见,您应该还有很长的路要走。

如果您不想这样做,那么您可以创建一个“页面”,并custom page template 处理此数据并通过$_GET 一串

您也可以使用WP_Rewrite 生成漂亮的永久链接,但这很复杂。在我看来,最好的解决方案是自定义帖子类型。

结束

相关推荐

用于从多个类别但不在一个类别中获取帖子的SQL查询

我需要获取类别1和类别2中最后一篇文章的ID和post\\u互动程序,并排除类别3中的内容。它必须是SQL,因为如果我使用WP\\u Query,它检索的信息太多,我只需要ID和post\\u标题。以下查询可以很好地从这两个类别中获取帖子,但如果我尝试排除第三个类别,它将不起作用:select distinct p.ID, p.post_title from wp_posts p, wp_terms t, wp_term_taxonomy