Wordpress改变主题管理页面

时间:2014-06-06 01:29:24

标签: php wordpress wordpress-plugin wordpress-theming

我真的是一名Drupal开发人员,但被要求做一些Wordpress工作,需要一些帮助。

我正在运行WP3.8.x

我们正在使用购买的拍卖主题,并希望通过添加其他支付网关来扩展其功能。

这就是我所拥有的:

拍卖主题会注册一个新的管理菜单

add_action('admin_menu', 'AuctionTheme_admin_main_menu_scr');  

然后注册子页面

function AuctionTheme_admin_main_menu_scr()
{
  add_submenu_page(
    "AT_menu_",
    __('Payment Gateways','AuctionTheme'),
    AuctionTheme_disp_spcl_cst_pic('gateway_icon.png') . __('Payment Gateways','AuctionTheme'), $capability, 'AT_pay_gate_', 'AuctionTheme_payment_gateways'
  );
  do_action('AuctionTheme_new_page_admin_menu');
}

最后创建了付款配置页面。

function AuctionTheme_payment_gateways()
{
  echo 'The Markup';
  do_action('AuctionTheme_payment_methods_action');
  if(isset($_POST['AuctionTheme_save1'])) {
    update_option('AuctionTheme_paypal_enable',         trim($_POST['AuctionTheme_paypal_enable']));
  }
}

显然我删除了一些代码,因为它与我的问题无关。

所以我们有自己的儿童主题叫mytheme。我以为我可以添加一个新动作?

所以在mytheme函数文件中添加了

add_action('AuctionTheme_payment_gateways', 'mytheme_payment_gateways');

function mytheme_payment_gateways () {
  echo 'Test';
}

我在页面中看不到测试...应该?或者我该如何添加?

1 个答案:

答案 0 :(得分:2)

为了让add_action能够正常运作,您必须拥有一个do_action来调用相同的代码。

所以,例如,你有:

add_action('AuctionTheme_payment_gateways', 'mytheme_payment_gateways');

这意味着代码中的某个位置(父级或子级主题)必须具有以下内容:

do_action('AuctionTheme_payment_gateways');

所以,基于你的代码,我怀疑你想在这里添加它:

function AuctionTheme_payment_gateways()
{
  echo 'The Markup';
  do_action('AuctionTheme_payment_methods_action');
  if(isset($_POST['AuctionTheme_save1'])) {
    update_option('AuctionTheme_paypal_enable',         trim($_POST['AuctionTheme_paypal_enable']));
  }
  // Add below do_action
  do_action('AuctionTheme_payment_gateways');
}

当然,这只是基于您的代码的猜测 - 您可能需要在其他地方添加do_action,但希望这种解释可以让您指向正确的方向。