我想在页面的侧边栏中使用默认的WordPress文本窗口小部件,该窗口小部件的标题将动态更改以添加页面的标题。
所以我在函数文件中使用了以下代码:
function my_widget_title($title, $instance, $id_base) {
if ( is_singular() && 'text' == $id_base) {
return get_the_title($post->ID).__(' Custom Tour Inquiry');
}
else {
return $title;
}
}
add_filter ( 'widget_title' , 'my_widget_title', 10, 3);
这肯定可以完成它应该做的事情,但是它也会更改我尝试使用的所有其他文本小部件的标题。
有什么办法可以确定一个将应用此代码的特定小部件,而其他文本小部件将“正常运行”吗?
答案 0 :(得分:2)
您可以给小部件指定一个特定的名称,例如“我的动态文本小部件”。然后在代码中添加对该标题的检测作为条件,如下所示:
function my_widget_title($title, $instance, $id_base) {
if ( is_singular() && 'text' == $id_base && $title == 'My Dynamic Text Widget') {
return get_the_title($post->ID).__(' Custom Tour Inquiry');
}
else {
return $title;
}
}
add_filter ( 'widget_title' , 'my_widget_title', 10, 3);
答案 1 :(得分:1)
请用以下代码替换您的代码。我刚刚在您的代码中添加了>>> d = {}
>>> text = 'W 300,W 200,D 100,D 400,D 600'
>>>
>>> for item in text.split(","):
... arr = item.split()
... d.setdefault(arr[0], []).append(arr[1])
...
>>> d
{'W': ['300', '200'], 'D': ['100', '400', '600']}
>>>
>>> w = [int(n) for n in d['W']]
>>> d = [int(n) for n in d['D']]
>>>
>>> bal = sum(d) - sum(w)
>>> bal
600
>>>
,以访问特定帖子。
global $post
希望这对您也一样。
答案 2 :(得分:1)
根据您的情况,这里是完整的解决方案。请用此新代码替换您的旧代码,并获得所需的结果。
这将在文本小部件中添加复选框,如果您选中此复选框,它将替换标题,否则将呈现普通标题。
function kk_in_widget_form($t,$return,$instance){
if($t->id_base == "text"){
$instance = wp_parse_args( (array) $instance, array( 'title' => '', 'text' => '', 'float' => 'none') );
?>
<p>
<input id="<?php echo $t->get_field_id('change_title'); ?>" name="<?php echo $t->get_field_name('change_title'); ?>" type="checkbox" <?php checked(isset($instance['change_title']) ? $instance['change_title'] : 0); ?> />
<label for="<?php echo $t->get_field_id('change_title'); ?>"><?php _e('Change Title'); ?></label>
</p>
<?php
$retrun = null;
}
return array($t,$return,$instance);
}
function kk_in_widget_form_update($instance, $new_instance, $old_instance){
$instance['change_title'] = isset($new_instance['change_title']);
return $instance;
}
add_action('in_widget_form', 'kk_in_widget_form',5,3);
//Callback function for options update (priorität 5, 3 parameters)
add_filter('widget_update_callback', 'kk_in_widget_form_update',5,3);
function my_widget_title($title, $instance, $id_base) {
if ( is_singular() && 'text' == $id_base && $instance['change_title']) {
return get_the_title($post->ID).__(' Custom Tour Inquiry');
}
else {
return $title;
}
}
add_filter ( 'widget_title' , 'my_widget_title', 10, 3);