我想在提交修改期间添加图片Thum的帖子Meta

时间:2011-10-18 作者:Mohammad Umer

我正在使用此函数从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时,它会自动在数据库中添加空白的拇指键

我只想为用户提供这个,所以只需添加文章,他们无需将图像添加到文章中,图像将自动获取,

有谁能给我建议这怎么可能

谢谢

穆罕默德·乌默尔

1 个回复
最合适的回答,由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 从那里开始。

希望这有帮助。

结束

相关推荐