WordPress:Modifying Options Pages

来自站长百科
跳转至: 导航、​ 搜索

可以为插件更改当前选项页面。

注意:这个操作较为艰难,如果你是个新手,我们不建议你尝试下面的步骤。

初始化变数[ ]

首先,在主要的插件PHP资源中,你应该声明你想要添加到选项页面上的变数:





//在数据库中创建vars的函数

function set_samplePlugin_options () {

     add_option('fake_option_a','value','Description');
     add_option('fake_option_b','value','Description');
     add_option('fake_option_c','value','Description');
}

//从数据库中删除vars的函数
function unset_samplePlugin_options () {
     delete_option('fake_option_a');
     delete_option('fake_option_b');
     delete_option('fake_option_c');
}

//创建/删除插件时,添加和删除vars
register_activation_hook(__FILE__,'set_samplePlugin_options');
register_deactivation_hook(__FILE__,'unset_samplePlugin_options');






找到插入的 XHTML[ ]

既然我们已经设置了变数,现在需要使得管理界面能够编辑变数。当然,我们可以使用一般的管理创建界面,但是如果只将其添加到一般的已经创建好的页面,我们不要那样做。

在选项标签下面,我们有五个名称不同的网页,我们可以将选项添加到这些网页:

  1. options-general.php
  2. options-writing.php
  3. options-reading.php
  4. options-privacy.php
  5. options-permalink.php
  6. options-misc.php

接着可能是这个操作最难的步骤:我们的确需要查看得到的源码,查询可以查询XHTML的位置。

我会为例子使用options-reading.php。显然,第一步是要导航到你的站点上的网页,如果需要的话,先登录。查看网页后,我们需要查看网页的源码:

  • IE7: 网页 -> 浏览源码
  • Firefox: 浏览 -> 网页源码
  • Safari: 浏览 -> 浏览源码

在得到的网页上找到你想要添加选项的位置。我希望在"给网页和feeds编码"下面,添加我的选项。

接着,我们要在源码中找到这些词:

78 79 为网页和 ...编码 80 <input name="blog_charset" type="text" id="博客...

(注意: 根据安装差别,行数字会不同)

现在,让我们看看可以重复使用的全部内容。

注意表格中的这些内容:

77 <table width="100%" cellspacing="2" cellpadding="5"...

78 79 为网页和 ...编码 80 <input name="blog_charset" type="text" id="blog...

81 The character encoding you write your blog in (UTF-...

82 83

根据先前的HTML知识(如果你阅读这篇文章,我假定你已经了解HTML)我知道通过添加另一个"TR"标签,我们可以给表格添加另一排。这时,我们需要找到"TR"标签的结尾部分,这样我们可以提升代码在哪里添加新的代码。返回到代码…

81 ... recommended</a>) 82 这是"TR"标签的结尾部分。你注意到结尾部分必须是唯一的,这样我们的代码不会在网页的其它位置找到这个结尾,而且结尾部分也不能太长,否则我们的代码就找不到这个结尾部分。 因此,我选择了: "推荐的</a>)\n" 我们需要\n,这样我们的代码能够识别有新的一行。稍后我们编写函数的时候,保存字符串。

创建新的XHTML[ ]

既然我们知道了在哪里插入代码,代码的形状,我们就需要创建自己的代码。让我们看看正排:

Encoding for pages and feeds:
<input name="blog_charset" type="text" id="blog_charset" value="UTF-8" 
       size="20" class="code" />

The character encoding you write your blog in (UTF-8 is <a href="link">recommended</a>)

通过查看网页的显示方式,我们可以分开XHTML不同的部分。标签位于位于中间,"TH"标签,真正的文本框当前是输入标签,而且在"BR标签之后,在下面有个描述。你也会注意到导入的名称和id与你先前设置的选项名称相同。我们稍后写参数值。下面有个例子:

Sample Option:
<input name="fake_option_a" type="text" id="fake_option_a" value="" 
       size="20" class="code" />

这是个描述

编写脚本[ ]

这时我们知道在哪里放入编码,在网页上放入什么内容,但是现在我们需要将XHTML写到网页上。一般来说,我们在自己的页面上编写XHTML,但是这个操作可以自动完成,我们可以通过javascript完成这个操作(因为关于这个,WordPress没有提供filters)。

因此返回到主要的插件PHP,让我们添加函数。我称其为"add_fake_options",因为它操作: function add_fake_options () {

}

使用action hooks,创建admin-footer时,我们需要指示WordPress运行那个函数: function add_fake_options () {

}
add_action('admin_footer', 'add_fake_options');

现在指示函数,通过添加脚本标签,在管理页面上创建javascript。 function add_fake_options () {

     echo '<script type="text/javascript">';
     echo '</script>';
}
add_action('admin_footer', 'add_fake_options');

接着我们指示函数只在我们想要的页面上运行(我们也可以通过PHP执行这个操作。这个部分的代码要在网页标签中搜索,并且查看标题是否匹配'options-reading'。如果你使用不同的网页标题,替换显示为options-reading ex: options-writing 或者 options-general的文件名。


function add_fake_options () {

     echo '<script type="text/javascript">';
     echo 'if(window.location.href.indexOf("'.
          'options-reading")!=-1) {';
     echo '}';
     echo '</script>';
}
add_action('admin_footer', 'add_fake_options');

现在我们指示函数将先前组后面的内容替换为我们编写的XHTML。在下面的代码中,为在"查找插入的 XHTML"部分查找的的代码,我们使用"replace"函数查找options-reading中的form1 element。语法是:document.form1.innerHTML.replace(insertHTML,insertHtml+replaceHtml);将我们的replaceHtml与options-reading中找到的insertHTML相连接

function add_fake_options () {

     echo '<script type="text/javascript">';
     echo 'if(window.location.href.indexOf("'.
          'options-reading")!=-1) {';
     echo 'document.form1.innerHTML =';
     echo 'document.form1.innerHTML =';
     echo 'document.form1.innerHTML.replace(';

echo '"recommended</a>)\n",'; echo '"recommended</a>)\n'. ' '. ''. 'Sample Option: '.

          '<input name=\"fake_option_a\" '.
          'id=\"fake_option_a\" value=\"\" '.
          'size=\"20\" class=\"code\" '.
          'type=\"text\"> '.

'This is a description ");'; echo '}'; echo '</script>'; } add_action('admin_footer', 'add_fake_options'); 现在,函数会将选项添加到页面啥啊那个,但是不会显示当前设置,点击更新时,也不会保存选项。在我们输入标签参数值变数内,添加get_option()函数,首先在当前设置中显示: function add_fake_options () { echo '<script type="text/javascript">'; echo 'if(window.location.href.indexOf("'. 'options-reading")!=-1) {'; echo 'document.form1.innerHTML ='; echo 'document.form1.innerHTML ='; echo 'document.form1.innerHTML.replace('; echo '"recommended</a>)\n",'; echo '"recommended</a>)\n'. ' '. ''. 'Sample Option: '.

          '<input name=\"fake_option_a\" '.
          'id=\"fake_option_a\" value=\"'.
          get_option('fake_option_a').
          '\" '.
          'size=\"20\" class=\"code\" '.
          'type=\"text\"> '.

'This is a description ");'; echo '}'; echo '</script>'; } add_action('admin_footer', 'add_fake_options'); 显示,要显示页面的当前设置,但是为了在管理员点击更新的时候,指示脚本更新设置,我们需要编辑称为page_options的隐藏变数,这个变数包含了用逗号分开的网页上所有选项的列表。首先,我们会使用getElementsByName('page_options')选择隐藏的input object,然后,我们将我们的名称添加到后面有逗号的参数值上: function add_fake_options () { echo '<script type="text/javascript">'; echo 'if(window.location.href.indexOf("'. 'options-reading")!=-1) {'; echo 'document.form1.innerHTML ='; echo 'document.form1.innerHTML ='; echo 'document.form1.innerHTML.replace('; echo '"recommended</a>)\n",'; echo '"recommended</a>)\n'. ' '. ''. 'Sample Option: '.

          '<input name=\"fake_option_a\" '.
          'id=\"fake_option_a\" value=\"'.
          get_option('fake_option_a').
          '\" '.
          'size=\"20\" class=\"code\" '.
          'type=\"text\"> '.

'这是描述 ");'; echo 'document.getElementsByName("page_options")[0]'. '.value = '. 'document.getElementsByName("page_options")[0]'. '.value + ",fake_option_a";'; echo '}'; echo '</script>'; } add_action('admin_footer', 'add_fake_options'); 图像:ModOptnPageExample.png 你添加了选项了:]如果你知道你的行为与我最初发表的评论相反,将选项添加到当前选项页面并不那么难。初始化变数后,要添加更多的选项,你需要在同一个位置的XHTML上添加,格式在page_options列表的名称上添加。