help using get_option

时间:2012-09-25 作者:Jamie

我从这个网站上得到了一些代码,这对我来说非常有用。如果在另一个帖子中找到它。我修改它的目的是在类别编辑区域中添加一个文本框,以便用户可以输入图像的路径。它正在发挥作用。我检查了数据库,确实看到了名为“paradiso\\u category\\u fields\\u option”的选项,该选项是一个名为“image”的数组,并且有一个指向图像的路径。我已经在管理区显示了此图像,但无法将其显示在我的网站正面。我已经试过了

 $cat_image = get_option(paradiso_category_fields_option);
 <img src="<?php echo $cat_image;?>">
这让我

 <img src="Array" />
所以我尝试了foreach循环,但也没有得到任何结果。我不知道我做错了什么。这是数据库中的一行

 paradiso_category_fields_option
 a:1:{i:7;a:1:{s:5:"image";s:67:"..wp-content/uploads/2010/12/menuItem1.jpg";}}
我缩短了url,以便它更适合此页面。

下面是我正在使用的代码,它使管理区域中的一切工作正常

 // the option name
 define(\'PARADISO_CATEGORY_FIELDS\', \'paradiso_category_fields_option\');

 // your fields (the form)
 add_filter(\'edit_category_form\', \'PARADISO_CATEGORY_FIELDS\');
 function paradiso_category_fields($tag) {
 $tag_extra_fields = get_option(PARADISO_CATEGORY_FIELDS);

?>

 <table class="form-table">
    <tr class="form-field">
 <th scope="row" valign="top"><label for="_category_image">Full URL to image</label>    </th>
 <td><input name="_category_image" id="_category_image" type="text" size="40"      aria-required="false" value="<?php echo $tag_extra_fields[$tag->term_id][\'image\']; ?>" />
 <p class="description">This needs the full path to the image you want to use.      Example, <br  />http://www.mysite.com/wp-content/uploads/myImage.jpg.</p>
 <img src="<?php echo $tag_extra_fields[$tag->term_id][\'image\'];  ?>" alt=""  />
        </td>
    </tr>
 </table>
<?php
 }


 // when the form gets submitted, and the category gets updated (in your case the      option will get updated with the values of your custom fields above
 add_filter(\'edited_terms\', \'update_paradiso_category_fields\');
 function update_paradiso_category_fields($term_id) {
   if($_POST[\'taxonomy\'] == \'category\'):
    $tag_extra_fields = get_option(PARADISO_CATEGORY_FIELDS);
    $tag_extra_fields[$term_id][\'image\'] = strip_tags($_POST[\'_category_image\']);
    update_option(PARADISO_CATEGORY_FIELDS, $tag_extra_fields);
   endif;
 }


 // when a category is removed
 add_filter(\'deleted_term_taxonomy\', \'remove_paradiso_category_fields\');
 function remove_paradiso_category_fields($term_id) {
   if($_POST[\'taxonomy\'] == \'category\'):
     $tag_extra_fields = get_option(PARADISO_CATEGORY_FIELDS);
     unset($tag_extra_fields[$term_id]);
     update_option(PARADISO_CATEGORY_FIELDS, $tag_extra_fields);
   endif;
 }
编辑-

我离弄清楚这件事越来越近了。我修改了循环。使用此代码的php

 <?php foreach ((get_the_category()) as $category){
 $cat_image = get_option(\'paradiso_category_fields_option\'); ?>
 <img src="<?php echo $cat_image[$category->cat_ID ][\'image\']; ?>" />
 <?php } ?>
这确实返回了它应该返回的两个图像,但它也会多次返回第一个图像。该特定类别中的每个标题一次。是否有办法针对主要类别而不是每个子类别?

1 个回复
最合适的回答,由SO网友:Ryan Koehler 整理而成

请记住,您需要引号中的get\\u option参数,如下所示:

$option = get_option(\'paradiso_category_fields_option\');
要从您提供的数据库选项中获取img url,请执行以下操作:

echo $cat_image[7][\'image\'];

结束