3

the_contentJSON API でカスタム フィールドを表示するためのこのフィルターには、少し絶望的です。

このプラグインhttp://wordpress.org/plugins/json-rest-api/を使用して、カスタム投稿タイプからの JSON 応答を取得しています。これらのカスタム投稿タイプには、モバイル アプリで表示する必要があるカスタム フィールドがあります。

これを実装するthe_content filterために、元のコンテンツを置き換えて、カスタム投稿タイプのみを 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 = '<img id="provider-logo" src="'.$custom_fields["wpcf-logo"][0].'" />';
    $content = $content.'<img id="provider-image" src="'.$custom_fields["wpcf-fotos"][0].'" />';
    $content = $content.'<h1 id="provider-name">'.$post->post_title.'</h1>';
    $content = $content.'<p id="provider-address">'.$custom_fields["wpcf-direccion"][0].'</p>';
    $content = $content.'<p id="provider-phone">'.$custom_fields["wpcf-phone"][0].'</p>';
    $content = $content.'<p id="provider-facebook">'.$custom_fields["wpcf-facebook"][0].'</p>';

    return $content;
}

それで、ブラウザ経由で情報をリクエストすると、これは例ですhttp://bride2be.com.mx/ceremonia/カスタムフィールドはうまく表示されますが、JSONデータをリクエストすると、カスタムフィールド。

以下に例を示します。

http://bride2be.com.mx/wp-json.php/posts?type=ceremonia

私はこれで少し迷っています、誰かが私を助けることができますか?

4

1 に答える 1

4

the_contentフィルターを使用している方法は、JSON API 呼び出しだけでなく、どこにでも適用されています。

とにかく、WordPress ではなく、プラグインにフックを追加するようにしてください (少なくとも、最初の試行では)。

以下はテストされていませんが、正しい道だと思います:

<?php
/* 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;
}

3 つのパラメーターすべてを調べて、これが正しい投稿タイプで発生し、正しく操作していることを確認する必要があります$_post

于 2013-10-29T08:21:15.713 に答える