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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/405809.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu 和 Centos 的一点差别

1、 centos使用yum的方式,而Ubuntu使用apt-get 方式(Raspberry也是) 2、centos支持rpm包,但Ubuntu不支持 3、Ubuntu桌面系统比Centos好看,二者都有桌面系统和服务器系统 4、Ubuntu普通用户可以采用sudo执行root命令…

飞凌开发板 cramfs 镜像文件修改

From: http://blog.csdn.net/ex_net/article/details/7247111 CRAMFS文件系统是专门针对闪存设计的只读压缩的文件系统,其容量上限为256M,采用zlib压缩,文件系统类型可以是EXT2或EXT3.    如果使用RAMDISK方式来使用文件系统,那么在系统运行之后,首先得把flash上的映像文件全…

Linux下的signal信号机制

在Linux中,要发送一个信号相当容易。程序员需要知道两个信息:要发送哪个信号,将这个信号发送给哪个进程。可以用 man 7 signal 找到一个可以利用的信号的列表。用户可以只将信号发送给用户自己的进程,也可以以root身份运行从而将信…

React开发(200):三种截取字符串的方法

JS提供三个截取字符串的方法,分别是:slice(),substring()和substr(),它们都可以接受一个或两个参数: var stmp "rcinn.cn"; 使用一个参数 alert(stmp.slice(3));//从第4个字符开始,截取到最后个字符;返回"nn.cn" alert(stmp.substring(3));//从第4个字…

oracle scn与数据恢复,[Oracle] SCN与数据恢复的关系

Oracle内部主要存在以下四种SCN1.系统检查点(system checkpoint)SCN每当一个检查点完成时,Oracle就把该检查点对应的SCN记录到控制文件中,可以用以下语句查看当前数据库的检查点SCN:select CHECKPOINT_CHANGE# from v$database;CHECKPOINT_CH…

js Date 生成某年某月的天数

$(function () {//构造一个日期对象:var day new Date(2014, 2, 0);//获取天数:var daycount day.getDate();alert(daycount);}) 省去了判断 闰年平年 转载于:https://www.cnblogs.com/dragon-L/p/4522144.html

romfs, cramfs和ramdisk

From:http://blog.csdn.net/at91rm9200/article/details/550074 文章来源 (http://publishblog.blogchina.com/blog/tb.b?diaryID3226065) cramfs和romfs只是一个文件系统类型,ramdisk相当于一块硬盘空间,可以理解为在内存中虚拟…

Qt中利用QProcess调用外部cmd.exe执行程序

1、#include "mainwindow.h"中 添加头文件&#xff1a; #include <QProcess> 添加成员&#xff1a; QProcess *myprocess; 添加槽函数声明&#xff1a; void showCMDResult(); void showCMDState(QProcess::ProcessState state); void showCMDError(); vo…

html 后# 号的作用,及html 如何传参

2019独角兽企业重金招聘Python工程师标准>>> 经常在 网上看到一些静态网页后加着 #XXX 如http://www.family168.com/tutorial/springsecurity3/html/introduction.html#spring-security-core 这种形式。这个#spring-security-core 起的作用就是在 introduction 中定…

oracle10g生成awr报告,awr报告生成位置.docx

awr报告生成位置/u01/app/oracle/product//dbhome_1/rdbms/admin/脚本生成awr报告  在SQL环境执行&#xff1a;SQL>/u01/app/oracle/product//dbhome_1/rdbms/admin/  输入报告类型&#xff1a;html或text  输入要生成报告的天数&#xff0c;缺省是7天  列出最近7天…

Codeforces Round #304 (Div. 2)

这次打得较差&#xff0c;差点就绿了。。。 B题&#xff0c;这B题竟然WA了&#xff0c;再看看就发现一个很严重的错误。。--! #include <iostream> #include <cstdio> #include <algorithm> #include <cstring>using namespace std;int num[3050];int …

Qt 设置应用程序开机自启动

要实现开机自启动&#xff0c;主要是将应用程序添加到注册表中。 一、首先定义注册表 #define AUTO_RUN "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run" 二、编写开机自启动设置函数 //开机自启动&#xff0c;采用QSetting的方式将其写…

MySQL浅谈 LEFT JOIN

On条件&#xff08;在“A left join b on conditional_expr”&#xff09;决定如何从table B 中检索数据行&#xff08;Matching-State&#xff09;; 如果&#xff22;中没有行匹配On 条件&#xff0c;额外的B的所有数据列被设为null; 如果Matching-Stage阶段,where语句的任…

oracle cdc 关闭,Oracle CDC部署流程

一、ORACLE环境检查查oracle数据库版本(>9.2.0.4.0).select * from v$version;BANNEROracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProdPL/SQL Release 10.2.0.1.0 - ProductionCORE 10.2.0.1.0 ProductionTNS for 32-bit Windows: Version …

几个重要的RedHat Linux内核文件介绍 (1)

From:http://tech.sina.com.cn/s/s/2006-06-27/061923370.shtml Linux服务器内核编译基础 mynix编译自www.linux.org之Linux HowTo之Kernel HowTo 在网络中&#xff0c;不少服务器采用的是Linux系统。为了进一步提高服务器的性能&#xff0c;可能需要根据特定的硬件及需求重新…

Qt 两个Ui 界面传值

一、说明 A子界面 B主界面 &#xff0c; 实现A往B传值&#xff0c;B显示. 二、利用emit和slot实现 2.1 对A.h 添加声明 signals: void sendData(QString); //用来传递数据的信号 2.2在A.cpp中适当位置将数据进行发射 emit sendData(ui->lineEdit->text());…

有哪些是你成为一名开发之后才知道的事情

目录 前言 疑问1成为一名开发真的很难嘛&#xff1f; 疑问2作为一名开发的工资一定很高吗 疑问3开发一定加班会很厉害嘛 疑问4一定要去大厂嘛 疑问5程序员是个很好的职业选择吗 疑问6毕业前参加培训好吗 疑问7入行之后要不断提升自己的能力吗 疑问8大学四年该如何度过 疑问…

她们分别买了什么?

using System; using System.Collections.Generic; using System.Text; class Program { static void Main(string[] args) { /* * 测试 9&#xff0e;她们分别买了什么? */ WhatWasBought(); …