Criar shortcode no WordPress, usando uma variável em 3 funções?

Estou usando a variável acfvalue para obter valor e usá-lo em mais de um shortcode, deixe-me explicar que eu quero armazenar o valor ACF em uma variável e, em seguida, use essa variável em 3 funções e crie 3 shortcode.

 $acfvalue = get_field( 'short_title' ); 

O código acima está obtendo o valor ACF e armazenando em $ acfvalue, agora eu quero usar essa variável em 3 funções diferentes e criar shortcode. Eu posso declarar e definir 3 vezes $ acfvalue e está funcionando, mas eu não vou buscar o mesmo valor do post meta.

 function hprice(){ $acfvalue = get_field( 'short_title' ); return '

'. $acfvalue . " Price list in India" . '

'; } add_shortcode( 'pprice', 'hprice' ); function hspecs(){ $acfvalue = get_field( 'short_title' ); return '

'. $acfvalue . " Full Specification" . '

'; } add_shortcode( 'pspecs', 'hspecs' ); function hreview(){ $acfvalue = get_field( 'short_title' ); return '

'. $acfvalue . " Review" . '

'; } add_shortcode( 'preview', 'hreview' );

então o código acima está funcionando … o problema é que eu quero mover $ acfvalue = get_field (‘short_title’); fora da function.

Solutions Collecting From Web of "Criar shortcode no WordPress, usando uma variável em 3 funções?"

use a function para chamar variável

  function give_value(){ $acfvalue = get_field( 'short_title' ); return $acfvalue; } function hprice(){ return '

'. give_value() . " Price list in India" .'

'; } add_shortcode( 'pprice', 'hprice' ); function hspecs(){ return '

'. give_value() . " Full Specification" . '

'; } add_shortcode( 'pspecs', 'hspecs' ); function hreview(){ return '

'. give_value() . " Review" . '

'; } add_shortcode( 'preview', 'hreview' );

Existem várias maneiras de chamar get_field( 'short_title' ) apenas uma vez:

Usando variável global :

Você pode declarar a variável $acfvalue global e depois usá-la dentro de sua function. Uma vez que global alcance global pode ter o mesmo nome de variável, é melhor prefixá-lo para que ele não crie conflitos:

 function hprice() { global $wpse256370_acfvalue; if( ! isset( $wpse256370_acfvalue ) ) { $wpse256370_acfvalue = get_field( 'short_title' ); } return '

'. $wpse256370_acfvalue . " Price list in India" . '

'; } add_shortcode( 'pprice', 'hprice' ); function hspecs() { global $wpse256370_acfvalue; if( ! isset( $wpse256370_acfvalue ) ) { $wpse256370_acfvalue = get_field( 'short_title' ); } return '

'. $wpse256370_acfvalue . " Full Specification" . '

'; } add_shortcode( 'pspecs', 'hspecs' ); function hreview() { global $wpse256370_acfvalue; if( ! isset( $wpse256370_acfvalue ) ) { $wpse256370_acfvalue = get_field( 'short_title' ); } return '

'. $wpse256370_acfvalue . " Review" . '

'; } add_shortcode( 'preview', 'hreview' );

Usando variável static :

Usar static variável static dentro de uma function será melhor do que a variável global . Como não poluirá o escopo global, então não há necessidade de prefixar o nome da variável neste caso:

 function wpse256370_acfvalue() { static $acfvalue; if( ! isset( $acfvalue ) ) { $acfvalue = get_field( 'short_title' ); } return $acfvalue; } function hprice() { return '

'. wpse256370_acfvalue() . " Price list in India" . '

'; } add_shortcode( 'pprice', 'hprice' ); function hspecs() { return '

'. wpse256370_acfvalue() . " Full Specification" . '

'; } add_shortcode( 'pspecs', 'hspecs' ); function hreview() { return '

'. wpse256370_acfvalue() . " Review" . '

'; } add_shortcode( 'preview', 'hreview' );

Usando a class :

A melhor maneira é usar uma class, porque usando uma class você também evita possíveis conflitos de nome de function:

 class WPSE_256370_Shortcode { private static $instance; private $acfvalue; public static function init() { self::getInstance(); add_shortcode( 'pprice', array( self::$instance, 'pprice' ) ); add_shortcode( 'pspecs', array( self::$instance, 'pspecs' ) ); add_shortcode( 'preview', array( self::$instance, 'preview' ) ); } public static function getInstance() { if( ! isset( self::$instance ) ) { self::$instance = new self; } return self::$instance; } public function acfvalue() { if( ! isset( $this->acfvalue ) ) { $this->acfvalue = get_field( 'short_title' ); } return $this->acfvalue; } public function pprice() { return '

'. $this->acfvalue() . " Price list in India" . '

'; } public function pspecs() { return '

'. $this->acfvalue() . " Full Specification" . '

'; } public function preview() { return '

'. $this->acfvalue() . " Review" . '

'; } } WPSE_256370_Shortcode::init();