从标签云小部件中删除标题属性

时间:2013-07-20 作者:Hassan

我使用内置的tag cloud小部件,它输出的术语带有标题属性,悬停时显示“x主题”。如何删除此title属性,或者更好的是,将其更改为对当前术语更有意义的内容。

我已经尝试过此代码,但它似乎不起作用:

// remove the title attribute from tag cloud widget
add_filter(\'wp_widget_tag_cloud\', \'remove_tag_title_attributes\');
function remove_tag_title_attributes($output) {
    $output = preg_replace(\'title="(.+)"\', \'\', $output);
    return $output;
}

2 个回复
SO网友:s_ha_dum

为什么您认为该代码会起作用?没有名为的挂钩wp_widget_tag_cloud 我能找到的no hook specifically meant for altering that attribute. 但你可以通过topic_count_text_callbackwp_tag_cloud, 这是什么generates the tag cloud for the widget, 还有一个钩子,允许您更改小部件的标记云参数。

function tag_count_cb($count) {
  return \'test\';
}

function remove_tag_title_attributes($args) {
  $args[\'topic_count_text_callback\'] = \'tag_count_cb\';
    var_dump($args);
  return $args;
}
add_filter(\'widget_tag_cloud_args\', \'remove_tag_title_attributes\');
但是你没有太多的工作要做——只有标记计数。要获得更多的工作机会,您需要做一些更像您尝试的事情,但使用不同的正则表达式和不同的挂钩。

function tag_cloud_attribute_rebuild($match) {
  $a = "<a href=\'%s\' class=\'%s\' title=\'%s\' style=\'%s\'>%s</a>";
  return sprintf(
    $a,
    $match[1],
    $match[2],
    $match[3],
    $match[4],
    $match[5]
  );
}

function remove_tag_title_attributes($output) {
  $pattern = "|<a href=\'([^\']*?)\' class=\'([^\']*?)\' title=\'([^\']*?)\' style=\'([^\']*?)\'>([^<]*)</a>|";
  $output = preg_replace_callback($pattern,\'tag_cloud_attribute_rebuild\',$output);
  return $output;
}
add_filter(\'wp_tag_cloud\', \'remove_tag_title_attributes\');
标题是$match[3]. 另一个信息是为您提供一些可以使用的信息。改变$match[3]sprintf. 如果这还不够,您必须提取ID 从…起$match[2] 或在中使用标记名$match[5] 并运行查询,但这对服务器来说将是非常耗费人力的。

这就是使用核心小部件的方式。另一种选择是以不同的名称重新构建小部件——也就是说,使用核心小部件作为模型来创建自己的小部件——并包括所需功能的更改版本。

SO网友:Rohit Pande

Try this out:

function wp_tag_cloud_remove_title_attributes($return) {
        // This function uses single quotes
        $return = preg_replace("` title=\'(.+)\'`", "", $return);
    return $return;
}
add_filter(\'wp_tag_cloud\', \'wp_tag_cloud_remove_title_attributes\');
结束

相关推荐

Get page id by title?

我使用以下代码将另一个wp页面的内容插入我的主页。是否可以使其与页面一起工作title 而不是身份证号码?例如,不是$page\\u id=518,而是$page\\u id=\'关于\'????$page_id = 518; //Your Page ID $page_data = get_page( $page_id ); // Displays the title echo \'<h1>\'. $page_data->post_title .\'</h1