2014-10-06 3 views
0

Я пытаюсь сохранить сообщение meta, используя post-> ID, но столбец $ кажется пустым и показывает уведомление - «Обратите внимание: попытка получить свойство non -объект "(при доступе к $ post-> ID)

Следовательно, add_filter, похоже, не работает вообще.

add_filter('add_to_cart_redirect', array($this, 'custom_add_to_cart_redirect')); // Goes in class constructor. 


function custom_add_to_cart_redirect() { 
    global $post; 
    var_dump($post).die();  // this $post var is always null. 
    return $this->woocommerce_custom_add_to_cart_get_cartURL(); // The global $post declaration within this method doesn’t works too. 
} 

Я также попытался добавить wp_post_resetdata (вызов) до глобальной декларации, но не повезло.

Подумайте, что здесь не так?

ответ

0

Вы можете использовать WooCommerce глобальной переменной, как

global $woocommerce; 
var_dump($woocommerce).die(); 
+0

Да, но почему не работает $ post? – user2119554

+1

Вы используете woocommmerce action hook, поэтому он будет работать с его собственной глобальной переменной –

+0

Ohh, так что можно получить текущий идентификатор продукта на его основе и сохранить мета-поле продукта, скажем, пользовательский URL? – user2119554

0

Вы загружая выше код во внешнем PHP скрипт? Возможно, вам придется включить wp_load.php

+0

нет, это плагин, то же самое работает и для других фильтров – user2119554

0

Сегодня я столкнулся с подобной ситуацией, когда глобальный $post был недоступен, когда это должно было быть. При ближайшем рассмотрении я обнаружил, что каждый запрос страницы возвращался true для is_404(), и запрос для сообщения 0 не смог вернуть данные для глобального объекта $post из-за этого.

Промывка постоянных ссылок сделала для меня трюк (ничего необычного, я просто сохранил их).

Смежные вопросы