0

现在可以完美运行。更新了代码。谢谢新家具。

  function foo_options(){
           global $post;
   if (isset($custom['website_url']) && isset($custom['website_url'][0])) {
   $website_url = isset($custom['website_url']) ? $custom['website_url'][0] : '';}
   ?>

<div id="foo-options">
<label>Website URL:</label><input name="website_url" value="<?php echo $website_url; ?>" />     
</div><!--end foo-options--> 
<?php

   }
{

   function update_website_url(){
       global $post;   
       if (($post != null) && isset($_POST['website_url'])) {
       update_post_meta($post->ID, "website_url", $_POST["website_url"]);
     }
  }

更新了代码和 bin。http://pastebin.com/2ZWisprm

4

1 回答 1

1

为了按顺序解决问题,关于以下行:

update_post_meta($post->ID, "website_url", $_POST["website_url"]);

trying to access a property of a non-object适用于$post->ID. 发生此错误的唯一方法是 if$post不是对象(例如数组),或者它是null.

undefined index错误适用于$_POST["website_url"];当您的表单当前未发布或当前 POST 数据中不存在该字段名时,就会发生这种情况。

我不知道你的$post变量中应该包含什么对象,所以以下只是一个猜测,但请尝试以下更新:

function update_website_url(){
    global $post;   
    if (($post != null) && isset($_POST['website_url'])) {
        update_post_meta($post->ID, "website_url", $_POST["website_url"]);
    }
}

这将确保$post它不为空,并假设它是一个正确的对象,并且website_url索引已设置。您可能希望增加检查以使用!empty()而不是isset(),但以上应该可以解决您的错误(除非$post是数组或其他非对象数据类型)。

于 2012-08-29T21:07:47.733 回答