我不熟悉自定义小部件和功能,需要一些帮助来理解如何实现某些功能。
在我的书店网站上,我需要使用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");\') );?>
最合适的回答,由SO网友:cybmeta 整理而成
首先,如果元键是isbn_metadata
是meta_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区域问题,当您使用第三方软件时,您应该询问开发人员。