我正在编写一个简单的WordPress插件,用于管理wp-admin区域中数据库中的分发服务器。用户需要首先选择州,并且列表将显示该类别中的分销商 - 并且他们将能够进行CRUD。
问题,选择操作有效,执行回发并进入查询。问题是当我进行“刷新”时,浏览器不会发送$ _POST。我假设这可能是一个WordPress的事情,因为这通常适用于正常情况。有什么想法吗?
这是我的示例代码:
function distributor_manager() {
global $wpdb,$table_prefix;
$disttable = $table_prefix.'tblDistributors';
echo '<h1>Distributor Manager</h1>';
echo '<form action="tools.php?page=distributor_manager" method="post" name="StateOption">';
echo '<table cellpadding="2" cellspacing="0" border="0">
<tr>
<td valign="middle"><strong>Select State:</strong></td>
<td>
<select name="StateID" onchange="document.StateOption.submit();">
<option value="0"> - SELECT STATE - </option>';
$States = getStates();
foreach ( $States as $abbreviation=>$fullname){
$display = $fullname;
$xID = $abbreviation;
if(isset($_POST['StateID']) && $_POST['StateID'] == $xID){
echo '<option value="'.$xID.'" selected="selected">'.$display.'</option>';
}else{
echo '<option value="'.$xID.'">'.$display.'</option>';
}
}
echo' </select>
</td>
</tr>
</table>';
echo '</form>';
var_dump($_POST);
var_dump($_REQUEST);
if(isset($_POST['StateID']) && $_POST['StateID'] != '0' && !isset($_POST['form']) && !isset($_POST['formAction'])){
if(!preg_match('/[A-Z]{2}/',$_REQUEST['StateID'])){
echo 'ERROR';exit();
}
$sql = "SELECT *
FROM ".$disttable."
WHERE State = %s
ORDER BY CompanyName";
$distributors = $wpdb->get_results( $wpdb->prepare($sql, $_POST['StateID']) );
echo '<div id="distributors">';
echo '</div>';
}
}
我回复了$ _REQUEST和$ _POST。当我进行选择时,它们具有值。如果我刷新浏览器,它们会变空,直到我从下拉列表中选择另一个选项。