我有medium profile。我是JSON feed。我想抓住发布日期并将其发布在网站上。 Feed显示'latestPublishedAt'到值1483582815852,转换为11月的日期,而个人资料显示日期1月5日。为什么日期不同?请指导。
<?php
function file_get_contents_custom($url){
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
$contents = curl_exec($ch);
if (curl_errno($ch)) {
return curl_error($ch);
} else {
curl_close($ch);
}
if (!is_string($contents) || !strlen($contents)) {
return false;
} else {
return $contents;
}
}
/**
* The plugin bootstrap file
*
* This file is read by WordPress to generate the plugin information in the plugin
* admin area. This file also includes all of the dependencies used by the plugin,
* registers the activation and deactivation functions, and defines a function
* that starts the plugin.
*
* @link http://www.acekyd.com
* @since 1.0.0
* @package Display_Medium_Posts
*
* @wordpress-plugin
* Plugin Name: Display Medium Posts
* Plugin URI: https://github.com/acekyd/display-medium-posts
* Description: Display Medium Posts is a wordpress plugin that allows users display posts from medium.com on any part of their website.
* Version: 2.0.0
* Author: AceKYD
* Author URI: http://www.acekyd.com
* License: GPL-2.0+
* License URI: http://www.gnu.org/licenses/gpl-2.0.txt
* Text Domain: display-medium-posts
* Domain Path: /languages
*/
// If this file is called directly, abort.
if ( ! defined( 'WPINC' ) ) {
die;
}
/**
* The code that runs during plugin activation.
* This action is documented in includes/class-display-medium-posts-activator.php
*/
function activate_display_medium_posts() {
require_once plugin_dir_path( __FILE__ ) . 'includes/class-display-medium-posts-activator.php';
Display_Medium_Posts_Activator::activate();
}
/**
* The code that runs during plugin deactivation.
* This action is documented in includes/class-display-medium-posts-deactivator.php
*/
function deactivate_display_medium_posts() {
require_once plugin_dir_path( __FILE__ ) . 'includes/class-display-medium-posts-deactivator.php';
Display_Medium_Posts_Deactivator::deactivate();
}
register_activation_hook( __FILE__, 'activate_display_medium_posts' );
register_deactivation_hook( __FILE__, 'deactivate_display_medium_posts' );
/**
* The core plugin class that is used to define internationalization,
* admin-specific hooks, and public-facing site hooks.
*/
require plugin_dir_path( __FILE__ ) . 'includes/class-display-medium-posts.php';
/**
* Begins execution of the plugin.
*
* Since everything within the plugin is registered via hooks,
* then kicking off the plugin from this point in the file does
* not affect the page life cycle.
*
* @since 1.0.0
*/
function run_display_medium_posts() {
$plugin = new Display_Medium_Posts();
$plugin->run();
}
run_display_medium_posts();
// Example 1 : WP Shortcode to display form on any page or post.
function posts_display($atts){
$a = shortcode_atts(array('handle'=>'-1', 'default_image'=>'http://i.imgur.com/p4juyuT.png', 'display' => 3, 'offset' => 0, 'total' => 10, 'list' => false), $atts);
// No ID value
if(strcmp($a['handle'], '-1') == 0){
return "";
}
$handle=$a['handle'];
$default_image = $a['default_image'];
$display = $a['display'];
$offset = $a['offset'];
$total = $a['total'];
$list = $a['list'];
$data = file_get_contents_custom("https://medium.com/".$handle."/latest?format=json");
$data = str_replace("])}while(1);</x>", "", $data);
$json = json_decode($data, true);
$json = json_decode($data);
$posts = $json->payload->references->Post;
$items = array();
$count = 0;
foreach($posts as $post)
{
echo "<pre>"; print_r ($post); echo "</pre>";
$items[$count]['title'] = $post->title;
$items[$count]['url'] = 'https://medium.com/'.$handle.'/'.$post->uniqueSlug;
$items[$count]['subtitle'] = $post->content->subtitle;
$items[$count]['latestPublishedAt'] = $post->latestPublishedAt;
if(!empty($post->virtuals->previewImage->imageId))
{
$image = 'http://cdn-images-1.medium.com/max/500/'.$post->virtuals->previewImage->imageId;
}
else {
$image = $default_image;
}
$items[$count]['image'] = $image;
$items[$count]['duration'] = round($post->virtuals->readingTime);
$items[$count]['date'] = $post->virtuals->createdAtRelative;
$count++;
}
if($offset)
{
$items = array_slice($items, $offset);
}
if(count($items) > $total)
{
$items = array_slice($items, 0, $total);
}
?>
<div id="display-medium-owl-demo" class="display-medium-owl-carousel">
<?php
foreach($items as $item) {
?>
<div class="display-medium-item">
<?php echo "<span class='display-medium-date'>".$item['date']."</span>"; ?> / <?php echo "<span class='display-medium-readtime'>".$item['duration']."min read</span>"; ?>.
<a href="<?php echo $item['url']; ?>">
<p class="display-medium-title details-title"><?php echo $item['title']; ?></p>
</a>
<p class="display-medium-subtitle">
<?php echo $item['subtitle']; ?>
</p>
<p class="display-medium-read-more">
<a href="<?php echo $item['url']; ?>" class="text-right display-medium-readmore">Read More</a>
</p>
</div>
<?php } ?>
</div>
<script type="text/javascript">
function initializeOwl(count) {
jQuery(".display-medium-owl-carousel").owlCarousel({
items: count,
lazyLoad : true,
});
}
</script>
<?php
if(!$list)
{
echo '<script>initializeOwl('.$display.');</script>';
}
?>
<?php
}
add_shortcode('display_medium_posts', 'posts_display');
答案 0 :(得分:1)
为了将所需的纪元时间戳转换为人类可读的,如果您使用date()
函数,则需要将纪元划分为1000。
例如。 echo date('Y-m-d H:i:s', 1483582815852/1000);