我想做的是让这个函数在我的插件代码块中工作,而不是将其作为插件。
我目前在wordpress之外的工作解决方案是
Save contents
$KeepText="$name||$Phone||";
$dataHolder="keepdata.txt";
$file = fopen($dataHolder,"w");
if(fwrite($file, $KeepText)){echo "Data Saved Successfully !";}
else{echo "Error Occur !";}
fclose($file);
Retrieve data $dataHolder="keepdata.txt";
$dataPool=file($dataHolder);
$TextPool=explode("||", (string)$dataPool[0]);
if ($dataPool) {
$ContactName=$TextPool[0];
$ContactPhone = $TextPool[1];
}
Output//联系人姓名//联系人电话
逻辑将完美地打印出所有必需的数据。
然而,在WordPress中执行同样的操作会产生错误,甚至不会回显数据。
我遇到了一些建议使用WP\\u文件系统的解决方案。From This Website我已经试过了,它作为一个独立的插件工作得很好。但这不是我想要的解决方案。
我想做的是让wp\\u文件系统像这样没有admin\\u menu()。
function filesystem_init($form_url, $method, $context, $fields = null) {
global $wp_filesystem;
if (false === ($creds = request_filesystem_credentials($form_url, $method, false, $context, $fields))) {
return false;
}
if (!WP_Filesystem($creds)) {
request_filesystem_credentials($form_url, $method, true, $context);
return false;
}
return true;
}
然后有
function dataTosave(){}
如下所示
function dataTosave($form_url){
global $wp_filesystem;
check_admin_referer(\'contact_form\');
$contactname = sanitize_text_field($_POST[\'contactname\']);
$contactphone = sanitize_text_field($_POST[\'contactphone\']);
$form_fields = array(\'contactname\',\'contactphone\');
$method = \'\';
$context = WP_PLUGIN_DIR . \'/keepdata\';
$form_url = wp_nonce_url($form_url, \'contact_form\');
if(!filesystem_init($form_url, $method, $context, $form_fields))
return false;
$target_dir = $wp_filesystem->find_folder($context);
$target_file = trailingslashit($target_dir).\'/keepdata.txt\';
$dataTosave=$contactname."||".$contactphone."||";
if(!$wp_filesystem->put_contents($target_file, $dataTosave, FS_CHMOD_FILE))
return new WP_Error(\'writing_error\', \'Error when writing file\');
return "Data Saved";
}
表单发布后
if(isset($_POST[\'contactform_submit\'])){
dataTosave();
//new submission run the function
}
<form method="post" action="" >
<?php wp_nonce_field(\'contact_form\'); ?>
<label for="contactname">Contact Name</label><br>
<input id="contactname" name="contactname" value="<?php echo $_POST[\'contactname\']?>" require >
<label for="contactphone">Contact Phone</label><br>
<input id="contactphone" name="contactphone" value="<?php echo $_POST[\'contactphone\']?>" required >
<?php submit_button(\'Submit\', \'primary\', \'contactform_submit\', true);?>
</form>
我曾经这样做过,但运气不好。谢谢