首页 > 解决方案 > php wordpress 在钩子内处理并将值同步到钩子外的变量

问题描述

我想要的是我有一个特殊的分类法,并且 get_terms 在没有加载的情况下不起作用,自然我能得到它的唯一方法是连接到“init”。但如果是这种情况,我将不得不重复这一点。我不想要这个。

正如您在下面的代码中看到的那样,我正在 init 中执行操作并尝试将其传输到“$ new_array”。我该怎么做?

    protected function get_reactions()
    {
        $new_array = array();
        
        add_action( 'init', function() use ( &$new_array ) {
            $reactions = get_terms( array(
                'taxonomy' => 'bp_reaction',
                'hide_empty' => false
            ));
    
            foreach ( $reactions as $value ) {
                $priority = get_option( 'taxonomy_'.$value->term_id.'_priority' );
                $image    = get_option( 'taxonomy_'.$value->term_id.'_image' );
                $new_array[$priority] = (object) array(
                    'id'       => $value->term_id,
                    'priority' => $priority,
                    'slug'     => $value->slug,
                    'name'     => $value->name,
                    'image'    => $image
                );
            }
        }, 9 );

        // Sort from largest to small
        krsort( $new_array );

        return $new_array;
    }

标签: phpwordpresswordpress-hook

解决方案


推荐阅读