如何在Wordpress中使用php代码创建页面

时间:2018-07-12 05:36:13

标签: php wordpress

我正在开发一个插件,该插件可从管理端获取输入(如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解决了该问题。谢谢,库纳尔。

2 个答案:

答案 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;