我真的是一名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';
}
我在页面中看不到测试...应该?或者我该如何添加?
答案 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
,但希望这种解释可以让您指向正确的方向。