我正在为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已经启动并运行。
答案 0 :(得分:2)
解决方案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
或者,您可以使用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);
答案 1 :(得分:1)
file_get_contents
:
$content = file_get_contents(get_template_directory() . '/single-' . $post->post_type . '.php');
答案 2 :(得分:1)
如果您没有尝试获取页面的完整html而只是获取其他帖子的内容,那么这将有效:
{{1}}