【问题标题】:Ordering input fields in WordPress General Settings page在 WordPress 常规设置页面中排序输入字段
【发布时间】:2013-10-10 16:38:15
【问题描述】:

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

我遇到的唯一问题是我想将“设置”>“常规”页面上的“徽标 URL”移动到“站点地址 (URL)”下。我不知道如何做到这一点。我已经在网上搜索并找不到有用的答案。

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

如何将 Logo_URL 在 General Page 上移到更高的位置?

/**
  * 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 . '" />';
    }
}

【问题讨论】:

  • 你可以放弃 PHP 4 语法,&amp;$this 就是 $this
  • 谢谢。我改变了它。这会改变任何功能吗?就像我说的,我有 0 的编码经验。我只是在拼凑我在互联网上找到的东西,并试图让它按照我想要的方式工作。
  • WP 需要 PHP 5.2.4+。忘记互联网吧,你会在这里和WordPress Development 找到很多很酷的东西;)哦,是的,感谢sscce.org 的问题这些天很难看到......

标签: php arrays wordpress


【解决方案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');

【讨论】:

  • 一旦我得到足够的代表,我会给你一个upvote!这很好用!谢谢!我刚刚注意到这实际上是用徽标 URL 替换了站点 URL。有什么办法让它插入而不是替换?
  • 这不是replaceWith,insertAfter完成了这项工作。
  • 你太棒了。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多