WordPress Private_Doing_it_Wrong()函数的替代方法是什么

时间:2016-09-09 作者:Xtremefaith

我注意到插件使用了单例模式,将使用WordPress的_doing_it_wrong() 在其clone() 方法,如:

<?php
public function __clone() {
    _doing_it_wrong( __FUNCTION__, __( \'Cheatin&#8217; huh?\', \'divlibrary\' ), $this->version );
}
?>
但我也注意到WordPress官方文档中的警告/通知:enter image description here

开发人员何时、如何使用它真的无关紧要,WordPress提倡不应该使用它,所以我想知道在自定义插件中这样做的正确方法是什么?该方法用于弃用代码,但在本例中,开发人员只想发出警告/警报。

Reference: https://developer.wordpress.org/reference/functions/_doing_it_wrong/

2 个回复
最合适的回答,由SO网友:Nathan Johnson 整理而成

WordPress private \\u doing\\u it\\u Error()函数的替代方法是什么?

WordPress永远无法摆脱_doing_it_wrong() 函数,因此使用它非常安全。但如果出于某种原因,您不想使用它,因为它被标记为私有,那么您可以创建一个插件,该插件具有一个名为doing_it_wrong() 即复制和粘贴自_doing_it_wrong().

另一种方法是不复制代码,而是使用处理不推荐使用的代码的类。下面的一些示例代码基本上与_doing_it_wrong().

class deprecated {
  protected $method;
  protected $message;
  protected $version;

  public function method( $method ) {
    $this->method = $method;
    return $this;
  }

  public function message( $message ) {
    $this->message = $message;
    return $this;
  }

  public function version( $version ) {
    $this->version = sprintf( 
      __( \'This message was added in version %1$s.\' ), 
      $version
    );
    return $this;
  }

  public function trigger_error() {
    do_action( \'doing_it_wrong_run\', $this->method, $this->message, $this->version );
    if ( WP_DEBUG && apply_filters( \'doing_it_wrong_trigger_error\', true ) ) {
      trigger_error( sprintf( 
        __( \'%1$s was called <strong>incorrectly</strong>. %2$s %3$s\' ),
        isset( $this->method ) ? $this->method : \'\', 
        isset( $this->message ) ? $this->message : \'\', 
        isset( $this->version ) ? $this->version : \'\'
      ) );
    }
  }
}
用法
class wpse_238672 {
  public function some_deprecated_method() {
    ( new deprecated() )
      ->method( __METHOD__ )
      ->message( __( 
        \'Deprecated Method: Use non_deprecated_method() instead.\', \'wpse-238672\'
       ) )
      ->version( \'2.3.4\' )
      ->trigger_error();

    $this->non_deprecated_method();
  }

  public function non_deprecated_method() {
  }
}

SO网友:John B

As of WordPress 5.4 _doing_it_wrong() 不再标记为private,所以看起来我们可以直接使用它。

相关推荐

如何在Functions.php中链接style.css

我是WordPress的新手;我刚开始学习WordPress。我想把风格联系起来。函数中的css。php,但我无法解决这里可能存在的问题。谁能给我指出正确的方向吗?指数php<?php get_header(); ?> <?php if ( have_posts() ) { while ( have_posts() ) { the_post();