将某些内容保存到Add_Filter中的全局变量

时间:2014-03-01 作者:NoSense

我又带着一个奇怪的问题来到这里。

首先,我使用ACF插件添加cistom字段。我的代码看起来像这样:

global $testMe;
$testMe = 0;
function my_acf_update_value( $value, $post_id, $field ) {
    global $testMe;
    $testMe = $value;
    return $value;
}
add_filter(\'acf/update_value/key=field_5308e5e79784b\', \'my_acf_update_value\', 10, 3);
echo $testMe; // -> print 0, not the $value!?
问题是,我希望在应用过滤器后,$testMe包含$value的值。

知道我哪里错了吗?

1 个回复
SO网友:s_ha_dum

我进行了一次测试,并完成了以下工作:

global $testMe;
$testMe = 0;
function my_acf_update_value( $value, $post_id, $field ) {
    global $testMe;
    $testMe = $value;
    return $value;
}
add_filter(\'acf/update_value/key=field_5308e5e79784b\', \'my_acf_update_value\', 10, 3);

// Test: Apply the filter
apply_filters(\'acf/update_value/key=field_5308e5e79784b\',\'a\',\'b\',\'c\');
// end Test

echo $testMe; // prints \'a\'
因此,原则上,您的代码是功能性的。我认为有几件事可能会出错。

  1. 钩子运行后,您正在添加过滤器。进行该测试apply_filters 在剩下的代码之前,它不会工作global 变量技术有点混乱。我可以提出这样的建议吗:

    function my_acf_grab_value($value,$echo = false) {
      static $var = 0;
      if (false === $echo) {
        $var = $value;
      } else {
        return $var;
      }
    }
    
    function my_acf_update_value( $value, $post_id, $field ) {
      my_acf_grab_value($value);
      return $value;
    }
    add_filter(\'acf/update_value/key=field_5308e5e79784b\', \'my_acf_update_value\', 10, 3);
    
    // Test: Apply the filter
    apply_filters(\'acf/update_value/key=field_5308e5e79784b\',\'Yay\',\'b\',\'c\');
    // end test
    
    echo my_acf_grab_value(\'\',true); 
    
    或者这个:

    function my_acf_update_value( $value = \'\', $post_id = 0, $field = \'\' ) {
      static $var = 0;
      if (!empty($value)) {
        $var = $value;
      } else {
        return $var;
      }
      return $value;
    }
    add_filter(\'acf/update_value/key=field_5308e5e79784b\', \'my_acf_update_value\', 10, 3);
    
    // Test: Apply the filter
    apply_filters(\'acf/update_value/key=field_5308e5e79784b\',\'Yay\',\'b\',\'c\');
    // end test
    
    echo my_acf_update_value();
    

结束

相关推荐

为什么Apply_Filters在循环内部和外部的行为不同?

What I want: 通过创建$query = new WP_Query($args);Why: 以json格式返回特定内容,作为一种API请求,准备在另一个站点上显示What I tried first:foreach($query->posts as $post) { $post->post_content = apply_filters(\'the_content\', $post->post_content); }; 这执行了autop 和do

将某些内容保存到Add_Filter中的全局变量 - 小码农CODE - 行之有效找到问题解决它

将某些内容保存到Add_Filter中的全局变量

时间:2014-03-01 作者:NoSense

我又带着一个奇怪的问题来到这里。

首先,我使用ACF插件添加cistom字段。我的代码看起来像这样:

global $testMe;
$testMe = 0;
function my_acf_update_value( $value, $post_id, $field ) {
    global $testMe;
    $testMe = $value;
    return $value;
}
add_filter(\'acf/update_value/key=field_5308e5e79784b\', \'my_acf_update_value\', 10, 3);
echo $testMe; // -> print 0, not the $value!?
问题是,我希望在应用过滤器后,$testMe包含$value的值。

知道我哪里错了吗?

1 个回复
SO网友:s_ha_dum

我进行了一次测试,并完成了以下工作:

global $testMe;
$testMe = 0;
function my_acf_update_value( $value, $post_id, $field ) {
    global $testMe;
    $testMe = $value;
    return $value;
}
add_filter(\'acf/update_value/key=field_5308e5e79784b\', \'my_acf_update_value\', 10, 3);

// Test: Apply the filter
apply_filters(\'acf/update_value/key=field_5308e5e79784b\',\'a\',\'b\',\'c\');
// end Test

echo $testMe; // prints \'a\'
因此,原则上,您的代码是功能性的。我认为有几件事可能会出错。

  1. 钩子运行后,您正在添加过滤器。进行该测试apply_filters 在剩下的代码之前,它不会工作global 变量技术有点混乱。我可以提出这样的建议吗:

    function my_acf_grab_value($value,$echo = false) {
      static $var = 0;
      if (false === $echo) {
        $var = $value;
      } else {
        return $var;
      }
    }
    
    function my_acf_update_value( $value, $post_id, $field ) {
      my_acf_grab_value($value);
      return $value;
    }
    add_filter(\'acf/update_value/key=field_5308e5e79784b\', \'my_acf_update_value\', 10, 3);
    
    // Test: Apply the filter
    apply_filters(\'acf/update_value/key=field_5308e5e79784b\',\'Yay\',\'b\',\'c\');
    // end test
    
    echo my_acf_grab_value(\'\',true); 
    
    或者这个:

    function my_acf_update_value( $value = \'\', $post_id = 0, $field = \'\' ) {
      static $var = 0;
      if (!empty($value)) {
        $var = $value;
      } else {
        return $var;
      }
      return $value;
    }
    add_filter(\'acf/update_value/key=field_5308e5e79784b\', \'my_acf_update_value\', 10, 3);
    
    // Test: Apply the filter
    apply_filters(\'acf/update_value/key=field_5308e5e79784b\',\'Yay\',\'b\',\'c\');
    // end test
    
    echo my_acf_update_value();
    

相关推荐

apply_filters() function

我用过apply_filters() 从WordPress帖子中检索内容时,如:$content=$query_val->post_content; $content = apply_filters( \'the_content\', $content ); 当我使用apply_filters() 这个apostrophe( \' ) 在我的文本中显示了一些字符。在我移除后apply_filters() 它显示正确。所以请解释清楚!!它在做什么?我已引用此链接Referal_lin