Я вижу ошибку "Вызов неопределенной функции pods ()", хотя pods () определена - PullRequest
0 голосов
/ 05 октября 2018

Внутри WordPress У меня есть два плагина.

Первый плагин называется Pods, и у него есть функция pods().

Второй плагин (который я создал) представляет собой простое дополнениедля модулей, и он использует функцию Pods(), например, так:

<?php

defined( 'ABSPATH' ) or die( 'No script kiddies please!' );

//Get the pod for the current post where this shortcode will be appearing
$pod = pods( get_post_type(), get_the_ID() );

//Build the name shortcode
add_shortcode( 'my_name', 'bg_my_name_shortcode' );
function bg_my_name_shortcode($pod) {
    $my_name = $pod->display('my_name');
    return $my_name;
}

Но это вызывает ошибку Uncaught Error: Call to undefined function pods() по какой-то причине, хотя pods() был определен в других модуляхплагин, и он был разработан для расширения следующим образом: https://pods.io/docs/code/pods/

Если я перемещу $pod = pods( get_post_type(), get_the_ID() ); внутри функции bg_my_name_shortcode, он работает нормально, но у меня есть много таких шорткодов, поэтому я не хочувызывать эти три функции (pods(), get_post_type(), get_the_ID()) снова и снова, вместо того, чтобы вызывать их один раз и сохранять в качестве переменной.

Я также не понимаю, почему это произойдет, поскольку pods() определенно является определенной функцией в плагине Pods.

1 Ответ

0 голосов
/ 05 октября 2018

Причина, по которой вы получаете эту ошибку, заключается в том, что плагин, определяющий эту функцию, еще не загружен.

Вам необходимо объявить короткий код после инициализации WordPress и загрузки всех плагинов.Попробуйте этот код:

<?php

defined( 'ABSPATH' ) or die( 'No script kiddies please!' );

function bg_my_name_shortcode_init(){
    //Get the pod for the current post where this shortcode will be appearing
    $pod = pods( get_post_type(), get_the_ID() );

    //Build the name shortcode
    add_shortcode( 'my_name', 'bg_my_name_shortcode' );
    function bg_my_name_shortcode($pod) {
        $my_name = $pod->display('my_name');
        return $my_name;
    }
}
add_action('init', 'bg_my_name_shortcode_init');

Более подробную информацию можно найти здесь

Редактировать

Исправление ошибки Uncaught Error: Call to a member function display() on string:

<?php

defined( 'ABSPATH' ) or die( 'No script kiddies please!' );

function bg_my_name_shortcode_init(){

    function bg_my_name_shortcode() {
        //Get the pod for the current post where this shortcode will be appearing
        $pod = pods( get_post_type(), get_the_ID() );
        $my_name = $pod->display('my_name');
        return $my_name;
    }
    //Build the name shortcode
    add_shortcode( 'my_name', 'bg_my_name_shortcode' );

}
add_action('init', 'bg_my_name_shortcode_init');
...