我在wordpress中使用wp_list_bookmarks()函数来获取已经在Wordpress后端添加的链接,比如blogroll等。
我的问题是我需要列表以某种方式出现,以便我可以将其放入列中,每列中有大约5个链接。
默认情况下,它只是一个大清单。是否有一种方法可以使用PHP来改变此函数发布链接的方式,以便我运行一个计数器,然后在5个链接关闭当前列表并为下一列开始一个新的链接?
我基本上需要这样的东西:
<ul class="column-1">
<li>link1</li>
<li>link2</li>
<li>link3</li>
<li>link4</li>
<li>link5</li>
</ul>
<ul class="column-2">
<li>link6</li>
<li>link7</li>
<li>link8</li>
<li>link9</li>
<li>link10</li>
</ul>
// etc...
提前谢谢。
答案 0 :(得分:1)
您可以使用Wordpress获取bookmarks()函数,然后根据自己的喜好定制输出。请看这里的例子:
<?php
$bookmarks = get_bookmarks( array(
'orderby' => 'name',
'order' => 'ASC',
'category_name' => 'Related Sites'
));
// Loop through each bookmark and print formatted output
$column = 1;
$counter = 1;
echo "<ul class='column-$column'>";
foreach ( $bookmarks as $bm ) {
if ($counter >= 5)
{
$column++;
$counter = 1; // reset the counter
echo "</ul><ul class='column-$column'>";
}
printf( '<li><a class="relatedlink" href="%s">%s</a></li>', $bm->link_url, __($bm->link_name) );
$counter++;
}
echo "</ul>";
?>
参考:http://codex.wordpress.org/Template_Tags/get_bookmarks#Examples
答案 1 :(得分:0)
根据wordpress的Plugin API:
除了上面描述的钩子(动作和过滤器)之外,插件修改WordPress行为的另一种方法是覆盖WordPress功能。事实上,WordPress打算重新定义插件的一小部分功能。
不幸的是wp_list_bookmarks
不在他们被认为是“pluggable”的功能列表中。
也许您可以在API中找到符合您需求的其他内容?
答案 2 :(得分:0)
您可以从插件(您需要编写)中挂钩wp_list_bookmarks()
。然后,该插件可以操作来自wp_list_bookmarks()
函数的普通HTML,并将该操纵的HTML返回给它,以便正常回显或返回。
这个想法是创建(并激活!)一个简单的插件,如:
<?php
/*
Plugin Name: Diggersworld Bookmarks
Plugin URI: https://stackoverflow.com/questions/6089883/can-wordpress-functions-be-modified
Description: Example plugin to customise output from wp_list_bookmarks
Version: 0.0
*/
function diggersworld_list_bookmarks($html)
{
// Do your transformation here
return '<p>Mmm pie.</p>';
}
add_action('wp_list_bookmarks', 'diggersworld_list_bookmarks');
?>
将其另存为插件文件夹中的文件,然后在Wordpress管理面板中激活它。您会看到以前放置书签的位置,而Mmm pie.
文字就在那里。修改该示例插件,使用您喜欢的任何方法返回所需的HTML。
由于这是绑定在wp_list_bookmarks()
函数内的一个钩子,因此您的模板应该正常调用wp_list_bookmarks()
。
当然,插件函数的主体可以使用类似于thesocialgeek's answer中的代码。