2

我想一次向 yoast seo 插件添加更多值(变量)。我试图用一个数组返回它以获取变量函数,但它不起作用。只有一个变量它工作正常!

这是有效的代码,只有一个变量:

/ define the custom replacement callback
function get_myname() {
    return 'My name is Moses';
}

// define the action for register yoast_variable replacments
function leweb_yoast_variables_2() {
    wpseo_register_var_replacement( '%%myname%%', 'get_myname', 'advanced', 'some help text' );
}

// Add action
add_action('wpseo_register_extra_replacements', 'leweb_yoast_variables_2');

所以上面的代码工作正常!但我想一次创建更多替换,所以我尝试了这段代码:

/ define the custom replacement callback
function get_myname() {
    // return 'My name is Moses';
    return array ('foo', 'bar');
}

// define the action for register yoast_variable replacments
function leweb_yoast_variables_2() {
    wpseo_register_var_replacement( '%%myname%%', 'get_myname[0]', 'advanced', 'some help text' );
}

// Add action
add_action('wpseo_register_extra_replacements', 'leweb_yoast_variables_2');

但它不起作用,函数 wpseo_register_var_replacement() 在第二个参数处需要一个函数。

感谢帮助

4

1 回答 1

1

WordPress 不会解析wpseo_register_var_replacement作为 PHP 代码传递的第二个参数。因此,它会尝试找到一个名为 的函数get_myname[0],该函数不存在——实际上不存在。

你可能有更多的选择来做你想做的事,但我现在能想到两个:

  1. 为每个替换项创建一个函数。
  2. 使用匿名函数。

#1 的解决方案示例

function get_var1() {
    return 'foo';
}

function get_var2() {
    return 'bar';
}

function register_yoast_vars() {
    wpseo_register_var_replacement('%%var_1%%', 'get_var1', 'advanced', 'some help text');
    wpseo_register_var_replacement('%%var_2%%', 'get_var2', 'advanced', 'some help text');
}

add_action('wpseo_register_extra_replacements', 'register_yoast_vars');

#2 的示例解决方案

function register_yoast_vars() {
    wpseo_register_var_replacement('%%var_1%%', function () { return 'foo'; }, 'advanced', 'some help text');
    wpseo_register_var_replacement('%%var_2%%', function () { return 'bar'; }, 'advanced', 'some help text');
}

add_action('wpseo_register_extra_replacements', 'register_yoast_vars');
于 2019-03-13T20:42:05.387 回答