我在网格中需要一些帮助。
有三个演员进化了。
背景 我知道它非常糟糕,但事实是生产网站和本地网站内容没有同步。生产中的帖子ID 1可以是本地的帖子ID 24。
问题定义: 我被分配使用第三方的API来获取最高点击率的顶级帖子列表并在我们的网站上显示。
$result = file_get_contents($url);
$result_json = json_decode($result, true);
以上几行对我来说很容易。
错误: 由于第三方没有发布摘录,他们发送URL,image_link,hit_count,帖子标题和作者信息作为JSON。 因此,在我的网站上,我能够很好地展示所有这些领域。但是当我的经理将帖子摘录添加到列表中时问题就开始了。 我尝试将URL转换为postid并使用以下内容获取帖子摘录:
get_the_excerpt(url_to_postid($top_posts['link']))
它适用于实时网站。但在舞台和当地它不工作。 好帖子URL有自己的域名。即使我用我的本地或舞台域名替换了域名。它没有显示任何东西。而对于一些帖子,当它显示摘录时,它不是来自同一篇文章。 伙计们需要一些想法。
有什么方法可以让我从URL中获取slug? 我尝试使用explode()函数。但有时候slug不是数组中的最后一项。
感谢您阅读本文。我感谢你的帮助。
答案 0 :(得分:0)
现在我找到了一个解决方案。主要使用URL获取帖子ID,如果没有找到使用帖子标题获取帖子ID。
public static function get_excerpt ( $id = null ) {
$post = get_post($id);
if ( empty($post) ) {
return '';
}
if ( strlen($post->post_excerpt) ) {
// Use the excerpt
$excerpt = $post->post_excerpt;
$excerpt = apply_filters('the_excerpt', $excerpt);
} else {
// Make excerpt
$content = $post->post_content;
$content = strip_shortcodes($content);
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]>', $content);
$excerpt_length = apply_filters('excerpt_length', 55);
$excerpt_more = apply_filters('excerpt_more', ' ' . '[…]');
$excerpt = wp_trim_words($content, $excerpt_length, $excerpt_more);
$excerpt = wpautop($excerpt);
}
return apply_filters('wp_trim_excerpt', $excerpt);
}
调用此函数以获取摘录。
$postid = url_to_postid($top_posts['link']);
$postid = $postid!=0 ? $postid : get_page_by_title($post_title, OBJECT, 'post')->ID;
$excerpt = self::get_excerpt($postid);
这适用于我的情况,因为我没有相同标题的帖子。
我仍在等待更好地解决我的问题。