小部件中函数的帮助

时间:2014-09-13 作者:RexTheRunt

我不熟悉自定义小部件和功能,需要一些帮助来理解如何实现某些功能。

在我的书店网站上,我需要使用ISBN编号显示外部网站上书籍的链接。我已经得到了他们的谷歌图书预览功能在我的主题的功能。php,但现在我想在侧栏小部件中添加其他链接。我成功地制作了一个新的空白小部件并将其显示出来。这是我试图从post元数据中获取ISBN的代码(元数据键是ISBN\\U元数据),但我没有得到正确的结果。

function get_kalahari_affiliate_link() {
$isbn_metadata = get_post_meta( get_the_ID(), \'_isbn\' ); 
return (        
    \'http://etrader.kalahari.net/referral.asp?linkid=5&partnerid=5710&ISBN=\' . 
    $isbn_metadata 
);
}
echo get_kalahari_affiliate_link( get_post_meta( get_the_ID(), \'_isbn\' ) );
我得到了一个链接,但它是:

http://etrader.kalahari.net/referral.asp?linkid=5&partnerid=5710&ISBN=Array
第二个问题是,它只出现在我的主边栏上,而不出现在任何自定义的“小部件区域”中(http://docs.woothemes.com/documentation/plugins/woosidebars/) 这可能意味着插件没有正确注册这些插件?

我非常感谢你的帮助!

这里是更新-小部件从这里的小部件模板教程中被盗http://www.makeuseof.com/tag/how-to-create-wordpress-widgets/跳到“此处显示小部件代码”。

<?php
/*
Plugin Name: Random Post Widget
Plugin URI: http://jamesbruce.me/
Description: Random Post Widget grabs a random post and the associated thumbnail to display on your sidebar
Author: James Bruce
Version: 1
Author URI: http://jamesbruce.me/
*/


class RandomPostWidget extends WP_Widget
{
  function RandomPostWidget()
  {
    $widget_ops = array(\'classname\' => \'RandomPostWidget\', \'description\' => \'Displays a random post with thumbnail\' );
    $this->WP_Widget(\'RandomPostWidget\', \'Random Post and Thumbnail\', $widget_ops);
  }

  function form($instance)
  {
    $instance = wp_parse_args( (array) $instance, array( \'title\' => \'\' ) );
    $title = $instance[\'title\'];
?>
  <p><label for="<?php echo $this->get_field_id(\'title\'); ?>">Title: <input class="widefat" id="<?php echo $this->get_field_id(\'title\'); ?>" name="<?php echo $this->get_field_name(\'title\'); ?>" type="text" value="<?php echo attribute_escape($title); ?>" /></label></p>
<?php
  }

  function update($new_instance, $old_instance)
  {
$instance = $old_instance;
$instance[\'title\'] = $new_instance[\'title\'];
return $instance;
  }

  function widget($args, $instance)
  {
    extract($args, EXTR_SKIP);

echo $before_widget;
$title = empty($instance[\'title\']) ? \' \' : apply_filters(\'widget_title\', $instance[\'title\']);

if (!empty($title))
  echo $before_title . $title . $after_title;;



// WIDGET CODE GOES HERE

  echo "<h1>This is my new widget!</h1>";


function get_kalahari_affiliate_link() {
    $isbn_metadata = get_post_meta( get_the_ID(), \'isbn_metadata\' ); 
return (        
    \'http://etrader.kalahari.net/referral.asp?linkid=5&partnerid=5710&ISBN=\' . 
    $isbn_metadata 
);
}
echo get_kalahari_affiliate_link( get_post_meta( get_the_ID(), \'isbn_metadata\' ) );

echo $after_widget;
  }

}
add_action( \'widgets_init\', create_function(\'\', \'return     register_widget("RandomPostWidget");\') );?>

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

首先,如果元键是isbn_metadatameta_key 您应该指定此元密钥,而不是_isbn.

第二get_post_meta 除非将第三个参数设置为true,否则返回数组。因此,您可以这样做:

function get_kalahari_affiliate_link() {
    $isbn_metadata = get_post_meta( get_the_ID(), \'isbn_metadata\', true );
    if( ! empty( $isbn_metadata ) ) {
        $link = \'http://etrader.kalahari.net/referral.asp?linkid=5&partnerid=5710&ISBN=\' . $isbn_metadata;
    } else {
         //Empty string or you can set any other value for control
         $link = \'\';
    }
    return $link;
}
注意:您正在使用get_the_ID() , 我假设您正在按照get_the_ID().

关于widget区域问题,当您使用第三方软件时,您应该询问开发人员。

结束

相关推荐

每页完全不同的Functions.php?

是否可以通过条件加载完全不同的函数?i、 函数中的e。php您有一个条件加载在旧函数的include中,然后有另一个条件加载在新函数中?这样做的原因是一个网站正在呈现新的面貌,但只是一页一页,旧的样式和功能很混乱,需要更换,但我不能只是删除它们,因为网站的其余部分将失败。