Шорткод отображается в неправильном месте, всегда сверху
Я работаю в интернет-магазине, который покажет корзину перед оформлением заказа. как сейчас это проверка перед корзиной.
Я не могу заставить это работать. У меня проблема с тем, что плагин всегда отображается в верхней части содержимого. я исправил это некоторое время назад. Теперь я обновил плагин и попробовал то же самое, что вы можете прочитать в нижней части экрана.
Код является оригинальным, как это:
public function __construct() {
add_action('init', array( &$this, 'start_session' ), 1);
add_shortcode( 'woocommerce_klarna_checkout', array(&$this, 'klarna_checkout_page') );
//add_action( 'woocommerce_proceed_to_checkout', array( &$this, 'checkout_button' ), 12 );
add_filter( 'woocommerce_get_checkout_url', array( &$this, 'change_checkout_url' ), 20 );
}
// Set session
function start_session() {
$data = new WC_Gateway_Klarna_Checkout;
$enabled = $data->get_enabled();
if(!session_id() && $enabled == 'yes') {
session_start();
}
}
// Shortcode
function klarna_checkout_page() {
$data = new WC_Gateway_Klarna_Checkout;
$data->get_klarna_checkout_page();
}
и я попробовал это:
ob_start();
$data->get_klarna_checkout_page();
$output_string=ob_get_contents();;
ob_end_clean();
return $output_string;
Чем плагин дыры исчезает, и единственное, что показывает, это /*
Как я писал сверху, это решение работало над более ранней версией плагина, но не сейчас. И все, что я могу найти на WebB, это решение. Так что, если у кого-то есть идея, мне бы это понравилось.
Мэйби проблема в том, что шорткод не находится в функции, куда я положил ob_start();? Я как новичок на php и не могу заставить его работать самостоятельно.