如何从JavaScript访问自定义POST元数据

时间:2019-07-03 作者:NDT-AM

我已经为我的WooCommerce产品创建了自定义元字段。然而,我使用的插件(高级Woo搜索)是用JavaScript编写的,我需要访问PHP变量。我用过wp_localize_script() 这样做。然而,在前端,没有显示我的数据。

以下是我的PHP代码:

    function js_enqueue_scripts() {
    global $post;
    $text2 = get_post_meta( $post->ID, \'_load_speed_field\', true );
    $text3 = get_post_meta( $post->ID, \'_tyre_brand_field\', true );
    $text4 = get_post_meta( $post->ID, \'_brand_model_field\', true );
    $text5 = get_post_meta( $post->ID, \'_run_flat_field\', true );
    //Put your variables inside a array
    $arrayname = array(
        \'text1\' => $text1,
        \'text2\' => $text2
    );

    //Register Script
    wp_register_script( "advanced-woo-search-pro", plugin_dir_url( __FILE__ ) . "/assets/js/common.js" );

    //Load the Script on Front-End
    wp_enqueue_script( "advanced-woo-search-pro" );

    //Localize script and pass the Data
    wp_localize_script( "advanced-woo-search-pro", "prefix", $arrayname );
}

//Works function on wp_enqueue_scripts Hook
add_action( "wp_enqueue_scripts", "js_enqueue_scripts" );
下面是我访问插件数据的JavaScript:

html += result.title + prefix.text1 + prefix.text2;
我在插件文档中找到了这个过滤器。

enter image description here

有人能帮助我将自定义字段连接到标题搜索结果吗?

谢谢

1 个回复
SO网友:Ankit Panchal

你的脚本应该是这样的。

function js_enqueue_scripts() {
    global $post;
    $text2 = get_post_meta( $post->ID, \'_load_speed_field\', true );
    $text3 = get_post_meta( $post->ID, \'_tyre_brand_field\', true );
    $text4 = get_post_meta( $post->ID, \'_brand_model_field\', true );
    $text5 = get_post_meta( $post->ID, \'_run_flat_field\', true );
    //Put your variables inside a array
    $arrayname = array(
        \'text3\' => $text3,
        \'text2\' => $text2
    );
    //Load the Script on Front-End
    wp_enqueue_script( \'aws-script\' );

    //Localize script and pass the Data
    wp_localize_script( \'aws-script\', "prefix", $arrayname );
}
//Works function on wp_enqueue_scripts Hook
add_action( "wp_enqueue_scripts", "js_enqueue_scripts" );
普通。js已经由插件排队,您不必再次重新注册并排队。

将此代码添加到激活主题的函数后。php文件您可以访问任何javascript文件中的变量,如下所示。

html += result.title + prefix.text3 + prefix.text2;
请检查此解决方案,并让我知道它是否有效。

相关推荐

Testing Plugins for Multisite

我最近发布了一个WordPress插件,它在单个站点上非常有效。我被告知该插件在多站点安装上不能正常工作,我理解其中的一些原因。我已经更新了代码,现在需要一种方法来测试更新后的代码,然后才能转到实时客户的多站点安装。我有一个用于测试的WordPress安装程序的单站点安装,但需要在多站点安装上进行测试。根据我所能找到的唯一方法是在网络上至少有两个站点来安装整个多站点安装,以测试我的插件。设置WordPress的整个多站点安装是插件开发人员的唯一/首选方式,还是有更快的测试环境可用。