我正在使用此函数从google获取imnages URL
function getGoogleImg($k)
{
$url = "http://images.google.com/images?as_q=##query##&hl=it&imgtbs=z&btnG=Cerca+con+Google&as_epq=&as_oq=&as_eq=&imgtype=&imgsz=m&imgw=&imgh=&imgar=&as_filetype=&imgc=&as_sitesearch=&as_rights=&safe=images&as_st=y";
$web_page = file_get_contents( str_replace("##query##",urlencode($k), $url ));
$tieni = stristr($web_page,"dyn.setResults(");
$tieni = str_replace( "dyn.setResults(","", str_replace(stristr($tieni,");"),"",$tieni) );
$tieni = str_replace("[]","",$tieni);
$m = preg_split("/[\\[\\]]/",$tieni);
$x = array();
for($i=0;$i<count($m);$i++)
{
$m[$i] = str_replace("/imgres?imgurl\\\\x3d","",$m[$i]);
$m[$i] = str_replace(stristr($m[$i],"\\\\x26imgrefurl"),"",$m[$i]);
$m[$i] = preg_replace("/^\\"/i","",$m[$i]);
$m[$i] = preg_replace("/^,/i","",$m[$i]);
if ($m[$i]!="")
array_push($x,$m[$i]);
}
return $x;
}
之后,我想添加图片url后元我使用此功能添加后元
function add_image_to_save_post($post_ID)
{
if ( !wp_is_post_revision($post_id) )
{
$title = $_POST[\'post_title\'];
$image = getGoogleImg ($title);
add_post_meta($post_ID, \'thumb\', $image[3], true);
}
}
add_action(\'wp_insert_post\', \'add_image_to_save_post\');
但当我点击链接add new post时,它会自动在数据库中添加空白的拇指键
我只想为用户提供这个,所以只需添加文章,他们无需将图像添加到文章中,图像将自动获取,
有谁能给我建议这怎么可能
谢谢
穆罕默德·乌默尔
最合适的回答,由SO网友:soulseekah 整理而成
如果查看当前设置,您可以看到add_image_to_save_post
函数在wp_insert_post
已执行。
wp_insert_post
当一篇文章插入到数据库中时,就会触发,正如您所知,只要您在WordPress中单击“添加新内容”,就会创建一个数据库条目,从而拉动您的钩子。
接下来发生的是$title = $_POST[\'post_title\'];
, 然而没有post_title
, 所以getGoogleImg()
使用调用NULL
, 因此,我假设$web_page
未填充您所期望的内容。
WordPress提供了一组在保存、编辑帖子甚至更改其状态时非常有用的操作。在您的情况下,帖子是为用户预建模的,这意味着他们无法发布,只能将状态设置为pending
. 还有状态更改操作:draft_to_pending
, draft_to_publish
, pending_to_publish
, publish_to_private
, 等等。它总是以status_to_status
.
所以希望能换个钩子draft_to_pending
会解决你的问题。
另一方面,使用来自$_POST[\'post_title\']
, 谁知道用户将在那里写什么样的东西,并且在您的情况下会导致目录遍历和XSS。所以试着从post
相反,您拥有$post_ID
, 使用获取它get_post($post_ID)
然后抓住它post_title
从那里开始。
希望这有帮助。