1
我有一个问题,默认的WordPress的档案部件。我想为它输出的每个链接添加一个变量。但由于某些原因,它似乎没有将该变量添加到链接或任何普通文本中。添加变量来链接在wordpress存档部件
这是我得到了什么至今(我返工小部件在我自己的主题,所以没有编辑到WP核心文件。):
$archive = wp_get_archives(apply_filters('widget_archive_args', array('type' => 'monthly', 'show_post_count' => $c, 'echo' => 0)));
$archive = explode('</li>' , $archive);
foreach($archive as $link) {
$catid='?catid='.$category.'/"';
$link = str_replace('/"',$catid, $link);
echo $link;
}
但是,这仍然链路输出,因为它通常没有str_replace。我仍然得到这个时,我认为我的pagesource:中
<a title="bla" href="http://www.mysite.com/2013/02/">February 2013</a>
代替
<a title="bla" href="http://www.mysite.com/2013/02/?catid=24">February 2013</a>
所以,任何人可以告诉我,我做错了什么?谢谢!
这是完整的类:使用过滤器get_archives_link
<?php class WP_widget_archive_by_category extends WP_Widget {
function __construct() {
$widget_ops = array('classname' => 'widget_archive_by_category', 'description' => __('A monthly archive of your site’s posts from selected category'));
parent::__construct('Archives-By-Category', __('Archives By Category'), $widget_ops);
}
function widget($args, $instance) {
extract($args);
$c = ! empty($instance['count']) ? '1' : '0';
$d = ! empty($instance['dropdown']) ? '1' : '0';
$title = apply_filters('widget_title', empty($instance['title']) ? __('Archives By Category') : $instance['title'], $instance, $this->id_base);
if(! $category = $instance["cat"]) $category='';
echo $before_widget;
if ($title)
echo $before_title . $title . $after_title;
if ($d) { ?>
<select name="archive-dropdown" onchange='document.location.href=this.options[this.selectedIndex].value;'> <option value=""><?php echo esc_attr(__('Select Month')); ?></option> <?php wp_get_archives(apply_filters('widget_archive_dropdown_args', array('type' => 'monthly', 'format' => 'option', 'show_post_count' => $c))); ?> </select>
<?php //'cat' => $category
} else { ?>
<ul>
<?php // 'cat' => $category,
$archive = wp_get_archives(apply_filters('widget_archive_args', array('type' => 'monthly', 'show_post_count' => $c, 'echo' => 0)));
$archive = explode('</li>' , $archive);
foreach($archive as $link) {
$catid='?catid='.$category.'/"';
$link = str_replace('/"',$catid, $link);
echo $link;
}
?>
</ul>
<?php
}
echo $after_widget;
}
function update($new_instance, $old_instance) {
$instance = $old_instance;
$new_instance = wp_parse_args((array) $new_instance, array('title' => '', 'count' => 0, 'dropdown' => ''));
$instance['title'] = strip_tags($new_instance['title']);
$instance['count'] = $new_instance['count'] ? 1 : 0;
$instance['dropdown'] = $new_instance['dropdown'] ? 1 : 0;
$instance['cat'] = (int) $new_instance['cat'];
return $instance;
}
function form($instance) {
$instance = wp_parse_args((array) $instance, array('title' => '', 'count' => 0, 'dropdown' => ''));
$title = strip_tags($instance['title']);
$count = $instance['count'] ? 'checked="checked"' : '';
$dropdown = $instance['dropdown'] ? 'checked="checked"' : '';
$category = isset($instance['cat']) ? absint($instance['cat']) : 1;
?>
<p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label> <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>" /></p>
<p>
<input class="checkbox" type="checkbox" <?php echo $dropdown; ?> id="<?php echo $this->get_field_id('dropdown'); ?>" name="<?php echo $this->get_field_name('dropdown'); ?>" /> <label for="<?php echo $this->get_field_id('dropdown'); ?>"><?php _e('Display as dropdown'); ?></label>
<br/>
<input class="checkbox" type="checkbox" <?php echo $count; ?> id="<?php echo $this->get_field_id('count'); ?>" name="<?php echo $this->get_field_name('count'); ?>" /> <label for="<?php echo $this->get_field_id('count'); ?>"><?php _e('Show post counts'); ?></label>
</p>
<p>
<label>
<?php _e('Category'); ?>
:
<?php wp_dropdown_categories(array('name' => $this->get_field_name('cat'), 'selected' => $instance['cat'], 'show_option_all' => 'All Categories', 'hide_empty' => '0')); ?>
</label>
</p>
<?php }} ?>
刚才那个代码怎么回事?你能提供更多的上下文吗? – brasofilo 2013-02-18 20:03:32
我编辑了我的帖子以显示整个班级。它在widgets.php中有二十一个主题。 (虽然我在一个二十一小孩的主题/副本中工作) – user2083806 2013-02-18 22:50:33
奇怪的是str_replace做的工作,如果我省略“从str_replace和$ catid。 – user2083806 2013-02-18 23:20:58