可以修改WordPress功能吗?


Can Wordpress functions be modified?

我正在使用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...

提前谢谢你。

您可以使用

Wordpress的get_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

根据wordpress的插件API:

除了上面描述的钩子(动作和过滤器)之外,插件修改WordPress行为的另一种方法是覆盖WordPress函数。事实上,WordPress打算让插件重新定义一小部分功能。

不幸的是,wp_list_bookmarks不在他们被认为是"可插拔"的功能列表中。

也许您可以在 API 中找到适合您需求的其他内容?

您可以从插件(您需要编写)挂接到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 答案中的代码。