在WordPress常规设置页面中订购输入字段

时间:2013-10-03 20:11:21

标签: php arrays wordpress

我创建了一个插件,在设置>上添加了一个输入框“Logo URL”。 WordPress中的常规页面。可以调用此输入并正常工作。我创建了另一个插件,用于拉出“徽标URL”并应用路径为“登录”屏幕提取图像。一切都显得很好。

我遇到的唯一问题是我想在设置>上移动'徽标网址'。 “网站地址(URL)”下的常规页面。我对如何做到这一点感到茫然。我在网上搜索过,无法找到有用的答案。

我目前正在删除原始的常规页面并添加新的常规页面,但我不确定如何解析正确的选项-general.php。

如何在常规页面上更高地移动Logo_URL?

/**
  * This is the code to create the Settings box on the Settings > General
  */    
$new_general_setting = new new_general_setting();

class new_general_setting {
    function new_general_setting( ) {
        add_filter( 'admin_init' , array( &$this , 'register_fields' ) );
    }
    function register_fields() {
        register_setting( 'general', 'URL_logo', 'esc_attr' );
        add_settings_field('URL_logo', '<label for="URL_logo">'.__('Website     logo (URL)' , 'URL_logo' ).'</label>' , array(&$this, 'fields_html') , 'general' );
    }
    function fields_html() {
        $value = get_option( 'URL_logo', '' );
        echo '<input type="text" id="URL_logo" name="URL_logo" value="' .     $value . '" />';
    }
}

1 个答案:

答案 0 :(得分:1)

不,没有办法本地订购。 WordPress首先打印出我们的东西。它必须用jQuery完成。

add_action( 'admin_footer-options-general.php', function()
{
    ?>
    <script type="text/javascript">
    jQuery(document).ready( function($) 
    {
        var son = $("label[for='URL_logo']").parent().parent(); // Our setting field
        var father = $("label[for='home']").parent().parent(); // WordPress setting field
        son.insertAfter(father);
    });
    </script>
    <?php
});

推荐的方法是将JS排入"admin_print_scripts-$hookname"的动作调用中。请注意admin_footeradmin_head中的钩子名称使用。

由于您的字段仅在加载页面后发生变化,我们可以注意到“跳转”。为了平滑它,我们可以使用:

add_action( 'admin_head-options-general.php', function()
{
    echo '<style>#wpbody .wrap form{display:none}</style>';
});

replaceWith()之后添加此jQuery:

$('#wpbody .wrap form').fadeIn('slow');