无法在我的主题的函数.php中拉取术语的元数据

时间:2013-11-14 作者:webo

我有一个奇怪的问题,我使用KC设置插件将自定义元数据附加到Woocommerce产品类别,出于某种原因,我可以在我编写的单独插件以及调试栏的控制台中很好地访问数据,但不能在我的函数中。php

控制台和插件中的工作代码(以最基本的形式)如下所示:

global $woocommerce;
echo (float) get_metadata( \'term\', 14, \'latitude\', true );
不幸的是,当从函数执行时,它只返回“0”,而不是实际值。php。我键入它,因为我需要它返回一个数字,但PHP将元数据的值解释为字符串。

为什么这在插件和控制台中都能起作用,但在函数中却不能。php?

编辑:使用get_metadata() 在柱子上工作很好。为什么是术语对象导致了这个问题?

编辑2:更令人困惑的是,我编写了一个wpdb查询来手动拉取它,当我尝试将项目添加到购物车时,只得到一个白色页面。然而,这个查询在控制台中工作得很好。

$wpdb->get_var( "SELECT meta_value FROM $wpdb->wp_termmeta WHERE term_id = 14 AND meta_key = \'latitude\'" );

1 个回复
SO网友:helgatheviking

woocommerce_add_to_cart_validation 是在中运行的筛选器add_to_cart_action 的方法WC_Form_Handler

此方法附加到init

add_action( \'init\', array( $this, \'add_to_cart_action\' ) );

您的分类很可能也在init 钩WooCommerce操作没有设置优先级,因此默认值为10。我会尝试以更高的优先级(更低的数字)注册您的分类法,以便在add_to_cart_action 正在运行。(只是猜测,未经验证)

结束

相关推荐

为什么不调用/触发“Plugins_Load”?

我正在打电话load_plugin_textdomain 然而,一旦加载了插件,就不会发生这种情况。我确实激活了一个插件,所以这不应该触发吗?add_action(\"plugins_loaded\", \"test_override\"); function init_localization() { echo \"init_localization<br>\"; load_plugin_textdomain (&#x