Wordpress simple_html_dom.php 管理页面
Wordpress simple_html_dom.php admin page
我使用 file_get_html 制作了脚本。我现在把它转移到 Wordpress 站点,但它似乎不起作用。
只是想在管理插件中使用它。
下面的片段:
require('includes/simple_html_dom.php');
if (isset($_POST['submit_updateColors'])) {
$qGetBrands = $mysqli->query("SELECT ... ");
while ($rowBrands = $qGetBrands->fetch_assoc()) {
$brandId = $rowBrands['cl_brand_Id'];
$url = "https://www.url.com". $rowBrands['cl_brand_url'];
$html = file_get_html($url);
$html->find('div[class=col-md-1p5]');
foreach($html->find('div[class=col-md-1p5]') as $brandColors) {
foreach ($brandColors->find('h3') as $brandColor) {
$p_brandColor = $brandColor->innertext;
}
foreach ($brandColors->find('img') as $ColorImg) {
$p_ColorImg = $ColorImg->src;
}
echo $p_brandColor ." <br />";
echo $imgName['basename'] ." <br /> <br />";
}
}
}
一段时间后开始:
echo "I'm here!!!"
结果:"I'm here!!!"
第一次 foreach 之后:
echo "I'm here!!!"
结果:无
在 $html = file_get_html($url) 之后:
echo "Result: ".$html;
结果:什么都没有,甚至没有显示 "Result"
错误信息:
Fatal error: Uncaught Error: Call to a member function find() on
boolean in
/home/xxx/public_html/wp-content/plugins/Farbkarte/index.php:67 Stack
trace: #0 /home/xxx/public_html/wp-includes/class-wp-hook.php(286):
main_init('') #1
/home/xxx/public_html/wp-includes/class-wp-hook.php(310):
WP_Hook->apply_filters('', Array) #2
/home/xxx/public_html/wp-includes/plugin.php(453):
WP_Hook->do_action(Array) #3
/home/xxx/public_html/wp-admin/admin.php(224):
do_action('toplevel_page_f...') #4 {main} thrown
in /home/xxx/public_html/wp-content/plugins/Farbkarte/index.php on
line 67
我不知道如何进行,很想得到一些帮助!
在 wordpress 之外,它工作完美。
希望我没有删除太多信息。
提前致谢!
将我之前的评论和更多提示移至此处。
一个好的开始是使用
启用错误报告
error_reporting(E_ALL);
ini_set('display_errors', 1);
从那里开始..我怀疑一些包含丢失了,你必须使用全局 $db 对象来访问 WP 中的数据库。
查看您的错误 - 显然,$html
变量是布尔值而不是 htmlDOM 对象。根据this,file_get_html()
returns false,如果fetched content为空或者超过MAX_FILE_SIZE.
检查您正在检索的 URL 是否真的存在,您是否有权访问它,并且 MAX_FILE_SIZE 是否设置正确
我通过查看
解决了这个问题
On line 75 of simple_html_dom.php:
$contents = file_get_contents($url, $use_include_path, $context, $offset);
I removed the reference to $offset:
$contents = file_get_contents($url, $use_include_path, $context);
No my page works fine. Not taking liability for anything else it breaks! :)
我使用 file_get_html 制作了脚本。我现在把它转移到 Wordpress 站点,但它似乎不起作用。
只是想在管理插件中使用它。
下面的片段:
require('includes/simple_html_dom.php');
if (isset($_POST['submit_updateColors'])) {
$qGetBrands = $mysqli->query("SELECT ... ");
while ($rowBrands = $qGetBrands->fetch_assoc()) {
$brandId = $rowBrands['cl_brand_Id'];
$url = "https://www.url.com". $rowBrands['cl_brand_url'];
$html = file_get_html($url);
$html->find('div[class=col-md-1p5]');
foreach($html->find('div[class=col-md-1p5]') as $brandColors) {
foreach ($brandColors->find('h3') as $brandColor) {
$p_brandColor = $brandColor->innertext;
}
foreach ($brandColors->find('img') as $ColorImg) {
$p_ColorImg = $ColorImg->src;
}
echo $p_brandColor ." <br />";
echo $imgName['basename'] ." <br /> <br />";
}
}
}
一段时间后开始:
echo "I'm here!!!"
结果:"I'm here!!!"
第一次 foreach 之后:
echo "I'm here!!!"
结果:无
在 $html = file_get_html($url) 之后:
echo "Result: ".$html;
结果:什么都没有,甚至没有显示 "Result"
错误信息:
Fatal error: Uncaught Error: Call to a member function find() on boolean in /home/xxx/public_html/wp-content/plugins/Farbkarte/index.php:67 Stack trace: #0 /home/xxx/public_html/wp-includes/class-wp-hook.php(286): main_init('') #1 /home/xxx/public_html/wp-includes/class-wp-hook.php(310): WP_Hook->apply_filters('', Array) #2 /home/xxx/public_html/wp-includes/plugin.php(453): WP_Hook->do_action(Array) #3 /home/xxx/public_html/wp-admin/admin.php(224): do_action('toplevel_page_f...') #4 {main} thrown in /home/xxx/public_html/wp-content/plugins/Farbkarte/index.php on line 67
我不知道如何进行,很想得到一些帮助! 在 wordpress 之外,它工作完美。
希望我没有删除太多信息。
提前致谢!
将我之前的评论和更多提示移至此处。
一个好的开始是使用
启用错误报告error_reporting(E_ALL);
ini_set('display_errors', 1);
从那里开始..我怀疑一些包含丢失了,你必须使用全局 $db 对象来访问 WP 中的数据库。
查看您的错误 - 显然,$html
变量是布尔值而不是 htmlDOM 对象。根据this,file_get_html()
returns false,如果fetched content为空或者超过MAX_FILE_SIZE.
检查您正在检索的 URL 是否真的存在,您是否有权访问它,并且 MAX_FILE_SIZE 是否设置正确
我通过查看
On line 75 of simple_html_dom.php:
$contents = file_get_contents($url, $use_include_path, $context, $offset); I removed the reference to $offset:
$contents = file_get_contents($url, $use_include_path, $context); No my page works fine. Not taking liability for anything else it breaks! :)