2017-01-03 72 views
0

我有一个WordPress的相关问题。现在,我得到我的逐年基于定制后的存档类型如下:WordPress的:在wp_get_archives下拉列表中创建自定义值

$args = array ( 
    'type' => 'yearly', 
    'post_type' => 'project', 
    'format' => 'custom', 
    'before' => '<li value="2016" data-filter-value=".classof2016">', 
    'after' => '</li>' 
); 

wp_get_archives($args);    

正如你所看到的,我创造了价值,这应与年度数据过滤器值。结果应如下所示:

<li value="2016" data-filter-value=".classof2016">2016</li> 
<li value="2015" data-filter-value=".classof2015">2015</li> 
<li value="2014" data-filter-value=".classof2014">2014</li> 

我该如何实现此解决方案?任何人都可以帮忙?

在此先感谢! 卡拉

回答

1

wp_get_archives()使用get_archives_link()这里是一个过滤器钩子比我们可以使用。

Sourcecode是最好的文档。

试试这个(在你functions.php):

add_filter('get_archives_link', function($link_html, $url, $text, $format, $before, $after) { 

    if ('custom' == $format) { 
     $link_html = "\t<li value=\"". esc_attr($text) ."\" data-filter-value=\".classof". esc_attr($text) ."\">$before<a href='$url'>$text</a>$after</li>\n"; 
    } 

    return $link_html; 

}, 10, 6); 

不过顺便说一句:在li元素A value属性是无效的HTML。

+0

谢谢@Andy,我用你的代码。而不是'return $ output;'我使用'return $ link_html;'然后它工作。这是对的吗?顺便说一句:我删除了'value'属性。感谢提示! – CaraMar

+0

是的,$ link_html是对的,我的错。 –