【问题标题】:Wordpress: Get the contents of another pageWordpress:获取另一个页面的内容
【发布时间】:2015-07-24 22:38:29
【问题描述】:

我正在为 SEO 插件的过滤器创建一些东西,并且我想找到一种能够从另一个页面获取另一个特定帖子的内容的方法(请注意,此代码很可能会在管理面板中运行)。

我希望这样做的方式是这样的:

$doc = new DOMDocument();
$doc->loadHTMLFile(get_permalink($post->ID));
// Some more code before saving the HTML

它工作正常,只是它在我的生产共享服务器上不起作用(可能是出于安全原因)。

我还希望在不破坏页面其他方面的情况下采用更有效的方式。

注意我也试过了:

  ob_start();
  include get_template_directory() . '/single-' . $post->post_type . '.php';
  $html = ob_get_clean();

但是,这破坏了管理面板上的一些内容。

有没有更好的方法来获取网站另一个页面的“内容”,并将其作为字符串存储在 Wordpress 中的变量中,而不会破坏任何内容。

更新 为了让我的问题更清楚,请注意我想获得完整的 HTML(不仅仅是它的一个方面)。

我也无法将 http 请求发送到同一台服务器(由于共享服务器的限制)。出于性能原因,无论如何都可以避免额外的 Http 请求。毕竟 WordPress 已经启动并运行了。

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

    解决方案 1:file_get_contents

    如下图使用file_get_contents

    $content = file_get_contents(get_permalink($post->ID));
    

    为了使用file_get_contents,应该启用php.ini中的PHP配置选项allow_url_fopen。如果您使用共享主机,allow_url_fopen 可能会被禁用和/或您的主机提供商可能不允许您更改它。

    解决方案 2:卷曲

    或者,您可以使用cURL。为了使用它,PHP 必须具有内置的 cURL 支持或安装了 cURL 扩展。

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $get_permalink($post->ID));
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HEADER, false);
    $content = curl_exec($curl);
    curl_close($curl);
    

    【讨论】:

    • 是的,我认为这也可以(类似于我的 Dom 文档),但由于安全限制,它是对同一域的外部请求,因此无法在我的共享服务器上使用(否则我会使用 DOM 文档方式)。
    • 有效的解决方案,但就像我说的那样,由于共享服务器的限制,我无法将 http 请求发送到同一主机。出于性能原因,无论如何都可以避免额外的 Http 请求。毕竟 WordPress 已经启动并运行了。
    • @YahyaUddin,令人惊讶的是,似乎没有简单的纯 Wordpress 解决方案,也许您会考虑使用前端解决方案。例如,使用 $.get 获取帖子内容并将 HTML 内容发送到服务器端 PHP 脚本进行分析的 JavaScript 函数。
    • 将此标记为最接近答案的正确答案,因为我可能会得到
    【解决方案2】:

    如果您不尝试获取页面的完整 html,而只是获取另一篇文章的内容,那么这将起作用:

    <?php
    $post_id = 3; //use the id you need here
    $post = get_post( $post_id ); //post content is in $post->post_content
    

    【讨论】:

    • 抱歉获取完整的 html。
    • 如何使用 wp_remote_get() 请求您想要的页面/帖子?这将是由服务器然后 wordpress 处理的正常请求,并应导致创建所需的 html 资源。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    相关资源
    最近更新 更多