php json传输被过滤,php-the_content过滤器,用于将自定义字段添加到JSON响应

我对这个用于显示JSON API中的自定义字段的the_content过滤器感到绝望.

我正在使用此插件http://wordpress.org/plugins/json-rest-api/从自定义帖子类型获得JSON响应.这些自定义帖子类型具有我必须在移动应用程序中显示的自定义字段.

为了实现这一点,我编写了以下代码,该代码使用the_content过滤器替换原始内容,仅使用HTML标签显示自定义帖子类型:

add_filter( 'the_content', 'add_custom_post_fields_to_the_content' );

function add_custom_post_fields_to_the_content( $content ){

global $post;

$custom_fields = get_post_custom($post->ID);

$content = '';

$content = $content.''.%24custom_fields%5B';

$content = $content.'

'.$post->post_title.'

';

$content = $content.'

'.$custom_fields["wpcf-direccion"][0].'

';

$content = $content.'

'.$custom_fields["wpcf-phone"][0].'

';

$content = $content.'

'.$custom_fields["wpcf-facebook"][0].'

';

return $content;

}

因此,当我通过浏览器请求信息时,这是一个示例http://bride2be.com.mx/ceremonia/,自定义字段显示得很好,但是当我请求JSON数据时,仅显示HTML,而没有自定义字段的值.

这是一个例子:

我对此不知所措,有人可以帮助我吗?

解决方法:

您使用the_content过滤器的方式不仅在JSON API调用中,而且在各处都得到应用.

无论如何,您应该尝试将钩子添加到插件,而不是WordPress(至少不是第一次尝试).

以下未经测试,但我相信是正确的轨道:

/* Plugin Name: Modify JSON for CPT */

add_action( 'plugins_loaded', 'add_filter_so_19646036' );

# Load at a safe point

function add_filter_so_19646036()

{

add_filter( 'json_prepare_post', 'apply_filter_so_19646036', 10, 3 );

}

function apply_filter_so_19646036( $_post, $post, $context )

{

# Just a guess

if( 'my_custom_type' === $post['post_type'] )

$_post['content'] = 'my json content';

# Brute force debug

// var_dump( $_post );

// var_dump( $post );

// var_dump( $context );

// die();

return $_post;

}

您必须设置为inspect all three parameters,以确保这会在正确的帖子类型中发生,并且您在正确地操作$_post.

标签:wordpress-plugin,wordpress,json,php

来源: https://codeday.me/bug/20191030/1966534.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值