使用foreach循环时似乎未调用函数

时间:2018-11-21 01:19:03

标签: php wordpress foreach wordpress-rest-api

我对PHP不太了解,但是我需要写几行代码以向WordPress中我的API响应添加自定义键:

<?php
$customFields = array("maker", "model", "ou", "prod_year", "barrel_length", "stock", "stock_length", "ejector", "links",
    "chokes", "condition", "original_case", "price");

function rest_get_post_field( $post, $field_name, $request ) {
    return get_post_meta( $post[ 'id' ], $field_name, true );
}

add_action( 'rest_api_init', 'add_custom_fields' );
function add_custom_fields(){
    foreach($customFields as $field) {
        register_rest_field( 'post',$field,
        array(
            'get_callback'  => 'rest_get_post_field',
            'update_callback'   => null,
            'schema'            => null,)
        );
    }
}

?>

上面的代码不起作用。首先,我要为每个自定义字段调用register_rest_field方法,例如:

function add_custom_fields(){
        register_rest_field( 'post','maker',
        array(
            'get_callback'  => 'rest_get_post_field',
            'update_callback'   => null,
            'schema'            => null,)
);

我已经对此进行了测试,并且可以正常工作。但是,创建一个包含自定义字段名称的字符串数组,然后在它们上循环似乎是一种更好的解决方案,只需更少的代码行。有没有办法使这项工作?谢谢。

1 个答案:

答案 0 :(得分:1)

由于您的import numpy import matplotlib.pyplot as plt arr = numpy.array([0.5, 0.1, 0.05, 0.67, 0.8, 0.9, 1, 0.22, 0.25]) y, other_stuff = numpy.histogram(arr, bins=numpy.linspace(0, 1, 6)) graph = plt.bar(numpy.linspace(0.1, 0.9, 5), height=y, width=0.2, edgecolor='black') plt.show() 变量不是全局变量,因此该函数会将其解释为null。您需要将自定义键数组作为函数的参数传递。

customFields

然后,在您的add_action函数中,您需要传递一个参数。

function add_custom_fields($fields)
{
    foreach($fields as $field) {
        register_rest_field( 'post',$field,
        array(
            'get_callback'  => 'rest_get_post_field',
            'update_callback'   => null,
            'schema'            => null,)
        );
    }
}

最后,调用do_action函数,将add_action('rest_api_init', 'add_custom_fields', 10, 1); 变量指定为函数的参数。

customFields

查看更多信息:Function arguments


或者(如果需要的话),只需在函数中定义自定义键数组即可。

do_action('rest_api_init', $customFields)