将帖子固定链接转换为直播和舞台网站的真实帖子ID

时间:2016-05-25 14:19:10

标签: wordpress api

我在网格中需要一些帮助。

有三个演员进化了。

  1. 实时网站/制作网站(wordpress)
  2. 本地网站/舞台/测试网站(wordpress)
  3. 第三方分析
  4. 背景 我知道它非常糟糕,但事实是生产网站和本地网站内容没有同步。生产中的帖子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不是数组中的最后一项。

    感谢您阅读本文。我感谢你的帮助。

1 个答案:

答案 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);

这适用于我的情况,因为我没有相同标题的帖子。

我仍在等待更好地解决我的问题。