添加管理员设置和选项

时间:2011-10-04 作者:Raphaël

我开发了我的第一个wordpress插件。我还没有找到一个“易于使用”的教程,所以我开始了。

当前,“add\\u菜单”没有添加我的链接来管理设置。然而,当我激活插件时,wordpress不会显示错误并告诉我“扩展已启用”

你能帮帮我吗?这是我的密码。

文件“affiliations.php”(我的网站/wp内容/插件/应用程序)

/* 
Plugin Name: Importateur de flux d\'affiliation
Plugin URI: http://my-site
Description: Plugin qui créé des articles en fonction de flux d\'affiliations
Author: dev@my-site
Version: 1.0 
Author URI: http://my-site
*/  

/**
 * Need php 5
 */

if(5.0 > floatval(phpversion())) 
{
// Throw notice
add_action(\'admin_notices\', \'affiliations_phpver_notice\');
}
else
{
include_once(\'affiliations.class.php\');
//create admin menu
add_action(\'admin_menu\', array(\'affiliations.class\', \'admin_menu\'));
}

function affiliations_phpver_notice() 
{
echo "<div class=\\"updated\\"><p><strong>This plugin works with php5+.</strong></p></div>";
} 
文件“affiliations.class.php”(我的网站/wp内容/插件/affiliations)

class Affiliations {

/**
 * Add options 
 * @return void
 */
public static function admin_menu() 
{
    add_options_page("Générer affiliations", \'Affiliations\', \'manage_options\', __FILE__, array(\'affliliations.class\', \'plugin_options\'));
}

/**
 * display html content options
 * @return void
 */
public static function plugin_options() 
{
    include(\'affiliations.tpl\');    
}

}
文件“affiliations.tpl”(我的网站/wp内容/插件/affiliations)

<strong>hello</strong>
感谢您的支持

2 个回复
最合适的回答,由SO网友:Raphaël 整理而成

好的,这是解决方案。

事实上add_action()add_options_page(), 我认为有必要array("filename", "function") ... 好的文字是array("object", "method")

SO网友:Mohit Bumb

I use this for my first theme please ignore little syntax error if any lol

更新:以下所有代码都应该进入你的函数中。php文件

制作主题选项页面的最佳(当然也是最简单)方法可能是使用Wordpress设置API。一个注释。。。只要用一些独特的短语(我使用我的主题名)替换代码中的THEME\\u名称,就可以了。

首先,我们需要告诉WordPress,我们将使用一些主题选项。我们通过调用register\\u setting来实现这一点。

function add_theme_options_init()
{
register_setting( THEME_NAME . \'_options_group\', THEME_NAME . \'_theme_options\',  \'validate_theme_options\' );
}
接下来,创建将在其中设置选项的“实际选项”页面。

function add_theme_options_page()
{

$page_title = \'Theme Options\';
$menu_title = \'Theme Options\';
$cap        = \'manage_options\'; // capability required for access to this menu
$slug       = THEME_NAME . \'-options\';
$callback   = \'draw_theme_options_page\';

add_options_page( $page_title, $menu_title, $cap, $slug, $callback );
}
现在添加“draw\\u theme\\u options\\u page”函数,该函数用作“add\\u theme\\u options\\u page”中的回调函数,该函数将为主题选项页输出HTML。在这个示例中,您可以看到我添加了三个字段:1)Facebook页面URL 2)Twitter句柄3)添加Twitter搜索词的字段

function draw_theme_options_page()
{

?>

<div class="wrap">
<h2>Theme Options</h2>
<form method="post" action="options.php">

<?php

    // this should be the same as the second parameter of register_setting() 
    $opt_name = THEME_NAME . \'_theme_options\'; 

    // adds all the necessary hidden form fields
    settings_fields( THEME_NAME . \'_options_group\' );

    // get the existing options
    $options = get_option( $opt_name );

                // the options fields
    $opt = array(
        \'fb_page\' => $opt_name . \'[fb_page]\',
        \'twitter\' => $opt_name . \'[twitter]\',
        \'twitter_search\' => $opt_name . \'[twitter_search]\',
    ); 

?>

    <table class="form-table">

        <!-- Facebook Page URL -->
        <tr valign="top"><th scope="row">Facebook Page</th>
            <td><input type="text" name="<?php echo $opt[\'fb_page\'] ?>" value="<?php echo $options[\'fb_page\']; ?>" /></td>
        </tr>

        <!-- Twitter Stuff -->
        <tr valign="top"><th scope="row">Twitter ID</th>
            <td><input type="text" name="<?php echo $opt[\'twitter\'] ?>" value="<?php echo $options[\'twitter\']; ?>" /></td>
        </tr>

        <tr valign="top"><th scope="row">Twitter Search Terms</th>
            <td><input type="text" name="<?php echo $opt[\'twitter_search\'] ?>" value="<?php echo $options[\'twitter_search\']; ?>" /></td>
            <td class="description">Please separate search terms using a comma</td>
        </tr>

    </table>

    <p class="submit">
        <input type="submit" class="button-primary" value="<?php _e(\'Save Changes\') ?>" />
    </p>

</form>
</div>

<?php

}
现在我们需要添加消毒功能。此函数只是确保没有格式错误的数据保存到数据库中。

function validate_theme_options( $input ) 
{   
$input[\'fb_page\']        =  wp_filter_nohtml_kses( $input[\'fb_page\'] );
$input[\'twitter\']    =  wp_filter_nohtml_kses( $input[\'twitter\'] );
$input[\'twitter_search\'] =  wp_filter_nohtml_kses( $input[\'twitter_search\'] );

return $input;
}
最后,我们实际上需要将所有这些函数绑定到正确的Wordpress挂钩中,以便添加主题选项页面并正常工作。

add_action( \'admin_init\', \'add_theme_options_init\' );
add_action( \'admin_menu\', \'add_theme_options_page\' );
这段代码几乎与我在自己的主题中使用的内容一模一样,但您可能需要稍微使用它并检查拼写错误。

结束

相关推荐