从插件修改主题外观>>标题管理屏幕

时间:2012-08-29 作者:Ben HartLenn

我一直在尝试构建一个插件(我的第一个插件),该插件添加了一些用于自定义标题管理屏幕的功能。

我想让我的插件在外观>>标题管理屏幕上添加一个锚链接,并让该链接在我的主插件文件中触发一个函数:但是,我很难弄清楚如何操作自定义标题管理屏幕(嗯,老实说,任何管理屏幕)。

目前,我正在使用新的add\\u theme\\u support(“custom-header”)方法为wordpress 3.4+添加自定义标题功能,并且,我认为我需要构建一个函数(添加锚定链接),并使用add\\u theme\\u support方法中的“admin head callback”参数触发它。假设大部分是正确的(?),请提供一个如何从插件向现有管理屏幕添加html的示例?

1 个回复
最合适的回答,由SO网友:Ben HartLenn 整理而成

好的,在黑暗中进行了一系列刺伤之后,我成功地向外观>>标题管理屏幕添加了一个链接:当单击该链接时,会触发jquery。调用主插件文件中的函数的post()ajax请求。为了不泄露我的秘密插件功能,我将分享一个基本示例;)

第一部分是在管理屏幕中获取链接。最初我认为可能有一种wordpress方法可以做到这一点,但当我使用add\\u theme\\u support()“admin head callback”激活自定义标题功能时,我最终使用jquery来编写链接。其工作原理如下:

add_theme_support(\'custom-header\', array(
                    \'default-image\' => get_template_directory_uri() . \'/images/headers/shore.jpg\',
                    \'width\' => 1000,
                    \'height\' => 288,
                    \'header-text\' => false,
                    \'uploads\' => true,
                    \'admin-head-callback\' => \'customThemeSetup_admin_header\' // run callback function in admin head of custom header screen
                ));
接下来,我必须创建上述回调函数,并使其添加一个jquery脚本,将锚定链接写入自定义标题管理屏幕。该链接使用JQuery的。向wordpress发送请求的post()方法:

function customThemeSetup_admin_header()
{
        $myPluginFile = plugin_dir_path(__DIR__);

        <script type="text/javascript" charset="utf-8">
                jQuery(document).ready(function($){
                    $(\'.available-headers:last\').append("<a id=\'testLink\' href=\'#\'>Trigger plugin function with AJAX</a>");
                    $(\'#testLink\').click(function(e){
                        e.preventDefault();

                        $.post(ajaxurl, {
                            action: \'test_ajax\' // the action for triggering plugin function will be wp_ajax_test_ajax
                        }, function(response, status){
                            if(status == "success")
                            {
                                 alert(response);// returns text in die() at the end of my plugin function(...next step)
                            }
                        });
                    });

                });
            </script>
 }
最后,当wordpress检测到上面的ajax请求时,我需要告诉它运行我的插件函数:“test\\uAjax”。看起来是这样的:

add_action(\'wp_ajax_test_ajax\', \'testAjax\');// when wordpress detects the action wp_ajax_test_ajax, it will trigger my plugin function testAjax() below
function testAjax()
{
die("Function triggered with AJAX!");// text sent back to alert(response) from previous step
}
我可以看出,我没有得到帮助的原因是,这个过程比我最初想象的要广泛:但希望这能在将来帮助其他人。请随时提出建议,或添加任何修改,因为这是我第一次做这样的事情。

结束

相关推荐

如果我删除wp_options表中的所有临时记录,会破坏我的站点吗?

我的网站目前在wp\\U选项表中有超过500k的瞬态记录。这会导致表频繁崩溃,我的站点也是如此。我以为暂时的记录过一段时间就会全部过期。我还不确定哪些插件应该负责,哪些插件出了问题。然而,我不希望我的网站像这样频繁崩溃。中的记录数wp_options 几周前,该表已大幅增加至20万以上,现在已增加至50万以上。我应该只删除%transient_timeout% 记录-目前有20多万条?任何帮助都将不胜感激。Updates on 16th July 2012实际上,我冒了风险(我先备份了我的网站),删除了所