我正在开发一个插件,该插件可从管理端获取输入(如API密钥等)并将其另存为WordPress数据库中的选项。该插件还会创建一个带有默认嵌入页面代码的页面(客户将会看到)(嵌入页面embed.php保存在插件目录中)。
我已将此邮件发送给WordPress进行审查。他们拒绝了。因此,现在我需要使“菜单”页面直接与API(存储在数据库中的API值)进行交互,而无需嵌入页面(embed.php)。如何使用默认的PHP代码创建页面(进行API调用并从API检索数据)
PHP内容将为:
global $options;
$get_values = get_option('plugin_options');
$api_key = $get_values['api_key'];
$app_id = $get_values['app_id'];
$loc_id = $get_values['loc_id'];
$ulr = $get_values['url'];
$args = array(
'LocationId' => $loc_id,
'AppId' => $app_id
);
$response =
wp_remote_post('https://www.apiurl.com?APIKEY='."$api_key".'', $args );
$currency = wp_remote_post( 'https://www.apiurl.com?APIKEY='."$api_key".'', $args );
$responseData = wp_remote_get( $response );
foreach ($responseData['MenuList'] as $Item)
{
?>
<table width="100%" height="auto" border="0px solid #FFFFFF">
<tr>
<td width="80%" class="cat"><?php
echo $Item['Name'];
?></td><td width="20%" align="center" class="cat"><a target="_blank"
href="<?php echo $ulr;?>">ORDER</a></td></tr><?php
foreach($Item['Item'] as $Value)
{
?><tr><td class="item" width="80%"><?php echo $Value['Name'];?></td><td class="item" align="center" width="20%"><b><?php echo $Value['Price'];?><?php echo $symbol;?></b></td></tr><?php
}
?>
</table><?php
}
以上代码应放在页面上,以便前端执行和显示。
更新:Kunal解决了该问题。谢谢,库纳尔。
答案 0 :(得分:0)
我为envanto市场制作了一个高级插件,并且在查看链接https://codecanyon.net/item/multipress-pro-wp-multi-step-registration-form-plugin/20702458后,我的插件已通过wordpress批准。
没有必要为客户嵌入代码,您可以为此生成简码。要创建菜单页面,您可以点击此链接https://developer.wordpress.org/reference/functions/add_menu_page/。
尝试wp_insert_post函数https://developer.wordpress.org/reference/functions/wp_insert_post/,这将由您的插件在wordpress中创建一个页面。您可以在此函数响应中获取其他参数,例如创建的页面ID,段头等。
答案 1 :(得分:0)
您可以创建一个将包含您的内容的字符串,然后可以将此字符串作为内容传递给wp_insert_post(https://developer.wordpress.org/reference/functions/wp_insert_post/);
<?php
global $options;
$get_values = get_option('plugin_options');
$api_key = $get_values['api_key'];
$app_id = $get_values['app_id'];
$loc_id = $get_values['loc_id'];
$ulr = $get_values['url'];
$args = array(
'LocationId' => $loc_id,
'AppId' => $app_id
);
$response = wp_remote_post('https://www.apiurl.com?APIKEY='."$api_key".'', $args );
$currency = wp_remote_post( 'https://www.apiurl.com?APIKEY='."$api_key".'', $args );
$responseData = wp_remote_get( $response );
$str = '';
foreach ($responseData['MenuList'] as $Item)
{
$str .= '<table width="100%" height="auto" border="0px solid #FFFFFF">
<tr>
<td width="80%" class="cat">'.$Item['Name'].'</td>
<td width="20%" align="center" class="cat">
<a target="_blank" href="'.$ulr.'">ORDER</a>
</td>
</tr>';
foreach($Item['Item'] as $Value)
{
$str .= '<tr>
<td class="item" width="80%">'.$str .=.'</td>
<td class="item" align="center" width="20%"><b>'.$Value['Price'].$symbol.'</b></td>
</tr>';
}
$str .= '</table>';
}
// Pass this $str variable as a content
echo $str;