两个站点之间的WP Simple Pie自定义字段

时间:2016-04-01 23:54:13

标签: php wordpress simplepie

我有2个网站。其中一个我使用ACF将自定义字段添加到自定义帖子类型“作业”,我已在主站点上设置了键“job_type”的自定义字段。然后我将其添加到函数文件中:

/** Add ACF fields to RSS **/
add_action('rss2_item', 'cup_rss2_job');
function cup_rss2_job() {
    $post_id = get_the_ID();
    $job_link_url = get_field('job_link', $post_id);

    if($job_link_url){
        echo "<job_link>{$job_link_url}</job_link>\n";
    }
}

当我访问http://my-domain.com/jobs/feed/这样的Feed时,我可以看到我现在可以访问<job_link>的值。但是,在我使用SimplePie(同一服务器)的网站上,我收到以下错误:

WP_Error Object
(
    [errors] => Array
        (
            [simplepie-error] => Array
                (
                    [0] => This XML document is invalid, likely due to invalid characters. XML error: not well-formed (invalid token) at line 59, column 106
                )

        )

    [error_data] => Array
        (
        )

)

我用来获取Feed的功能应该正确设置,我知道因为我使用类似的功能来获取具有单独自定义字段的相同站点上的另一个Feed。这是我用于fetch_feed

的功能
function cup_jobs_feed($limit, $offset) {  

    $feed = fetch_feed( 'http://my-domain.com/jobs/feed/' );

    if ( ! is_wp_error( $feed) ):

        // Get a maximum of 1 item
        $maxitems = $feed->get_item_quantity( $limit );
        $items = $feed->get_items( $offset, $maxitems );

        foreach ( $items as $item ):

            $feedDescription = $item->get_content();
            $image = returnImage($feedDescription);
            $image = scrapeImage($image);
            $image_url= $item->get_permalink();
            $description = $item->get_description();
            $description = preg_replace("/<img[^>]+\>/i", "", $description); //strip img out of description
            $job_link = $item->get_item_tags('','job_link')[0]['data'];
            ?>
            <div class="row job-listing">
                <div class="col-md-4">
                    <div class="image-box"><?php echo '<a href="' . $image_url . '"><img class="aligncenter" src="' . $image . '" /></a>'."\n";?></div>
                </div>
                <div class="col-md-8 job-details">
                    <h4><a href="<?php echo $item->get_permalink(); ?>" target="_blank"><?php echo $item->get_title(); ?></a></h4>
                    <p><?php echo strip_tags($description); ?></p>
                    <p><?php
                        if($job_link){ ?>
                            <a href="<?php echo $job_link; ?>" target="_blank" title="Click Here to Register">Learn More</a>
                        <?php
                        } else { ?>
                            <a href="<?php echo $item->get_permalink(); ?>" target="_blank">Learn More</a>
                        <?php } ?>
                    </p>   
                </div>
                <hr>
            </div>

            <?php
        endforeach; 
    else: // Returned WP_Error, unable to fetch the feed.
    ?>
        <p>There was an error fetching the CUP Jobs, please try again later</p>
    <?php
    endif;
    ?>
<?php
}

1 个答案:

答案 0 :(得分:0)

通过XML验证程序运行我的Feed后,我发现其中一个job_link网址有“&”,XML需要将其转换为html &#038;,这就是导致feed抛出无效字符的错误消息。

所以简而言之,如果我将它放在网站#1 http://google.com/view=mobile&location=1的自定义字段中,则会失败。正确的方法应该是:

http://google.com/view=mobile&#038;location=1