Pageline DMS选项面板中的博客名称和博客描述

时间:2013-10-23 作者:Luke

我正在尝试在pagelines dms框架中设置一个前端选项面板,用户可以从中更改blogname和blogdescription。到目前为止,我已经设置了包含文本字段“blogname”的表单blogdescription\'如下

add_filter(\'pl_sorted_settings_array\', \'add_global_panel2\');
function add_global_panel2($settings){
    $settings[\'privacy\'] = array(
        \'name\' => \'Blog Name\',
        \'icon\' => \'icon-eye-open\',
        \'opts\' => array(
            // Regular Options Engine
            array(
            \'key\' => \'blogname\',
        \'type\' => \'text\',
                \'label\' => \'blog Name\'
        ),
            // Regular Options Engine
            array(
                \'id\'   => \'blogdescription\',
        \'type\' => \'text\',
                \'label\' => \'blog description\'

            ),
        )
    );
    // Finally we return the new array
    return $settings;
}
然而,我不确定如何将其与wordpress选项联系起来。我在pagelines dms编辑器中找到了以下函数。设置。php是我成功的关键,但我不确定如何以正确的方式实现它:

/*
 * This class contains all methods for interacting with WordPress\' data system
 * It has no dependancy so it can be used as a substitute for WordPress native functions
 * The options system inherits from it.
 */
class PageLinesData {

    function meta($id, $key, $default = false){

        $val = get_post_meta($id, $key, true);

        if( (!$val || $val == \'\') && $default ){

            $val = $default;

        } elseif( is_array($val) && is_array($default)) {

            $val = wp_parse_args( $val, $default );

        }

        return $val;

    }

    function meta_update($id, $key, $value){

        update_post_meta($id, $key, $value);

    }


    function opt( $key, $default = false, $parse = false ){

        $val = get_option($key);

        if( !$val ){

            $val = $default;

        } elseif( $parse && is_array($val) && is_array($default)) {

            $val = wp_parse_args( $val, $default );

        }

        return $val;

    }

    function opt_update( $key, $value ){

        update_option($key, $value);

    }

    function user( $user_id, $key, $default = false ){

        $val = get_user_meta($user_id, $key, true);

        if( !$val ){

            $val = $default;

        } elseif( is_array($val) && is_array($default)) {

            $val = wp_parse_args( $val, $default );

        }

        return $val;

    }

    function user_update( $user_id, $key, $value ){
        update_user_meta( $user_id, $key, $value );
    }



}
(整个文件的副本可在此处找到:http://themes.svn.wordpress.org/dms/1.0.2/editor/editor.settings.php)

如果有人能帮助我,我将不胜感激。

提前感谢!

1 个回复
SO网友:Luke

好啊

所以我找到了解决问题的办法;

Pagelines将每个键和值对编码为json字符串,在wp\\u options表中有自己的名为pl\\u settings的选项。

它们还允许您使用以下命令访问每个键->值对:$value=pl\\u设置(\'option\\u key\')

因此,我采取了使用以下代码来满足我的需要的方法:

add_filter(\'pl_sorted_settings_array\', \'add_global_panel2\');
function add_global_panel2($settings){
    $settings[\'privacy\'] = array(
        \'name\' => \'About Your Loved One\',
        \'icon\' => \'icon-heart\',
        \'opts\' => array(
            // Regular Options Engine
        array(
                \'key\' => \'blogname\',
                \'type\' => \'text\',
                \'label\' => \'the name of your loved one\',
                \'help\' => \'test\'
        ),
            // Regular Options Engine
            array(
                \'key\'   => \'blogdescription\',
                \'type\' => \'text\',
                \'label\' => \'a message to your loved one\',
                \'help\' => \'test\'
            ),
        )
    );
    update_option(\'blogname\', $value = pl_setting(\'blogname\'));
    update_option(\'blogdescription\', $value = pl_setting(\'blogdescription\'));
    // Finally we return the new array
    return $settings;
}
以这种方式工作的唯一缺点是,我需要刷新浏览器两次,一次更新其中一个值,使其在相应的选项上实际生效。

如果有人能做得更好,请告诉我。

结束

相关推荐

在wp_Options的一个设置字段中可以存储的选项数量是否有限制?

我有一个带有选项页的主题。在这一页上有1083个选项。我注意到最后13个没有保存。它们一度保存了,但在我添加了新选项之后,它们停止了工作。我怀疑我可能遇到了某种选项限制或阵列上的限制,为了测试这一点,我删除了最后13个选项上方的7个选项,并确保在这之后保存了足够多的7个选项。我一直在试图找到有关这方面的信息,但一直无法找到。是否有人知道您在一个设置字段中只能有1070个选项?这不是数据库长文本内存限制的问题。这些是简单的1和0以及十六进制颜色值和其他CSS类型的内容。该字段的输出量仅为33k。