我現在有一個網站與類別&子類別,其中每個項目被格式化爲一個硬編碼列表如下:WordPress的 - 迷茫,試圖用的add_filter定製wp_list_categories
<li class="cat-item open-access"><a href="/categories/open-access/">Open Access</a></li>
重要的是,每個<li>
項目被賦予一個類別,它與內部鏈接的類別的子彈相匹配。
我很明顯喜歡用Wordpress'wp_list_categories()
來輸出列表而不是硬編碼它,但需要爲每個<li>
項目保留自定義類。
我一直在尋找到過濾器和行動,並認爲,加入該到我的主題的functions.php
文件我可能會拿出一個修復:
function add_class_from_slug($wp_list_categories) {
$pattern = '/class=\"/';
$replacement = 'class="'.$category->slug.' ';
$newclass = preg_replace($pattern, $replacement, $wp_list_categories);
return $newclass;
}
add_filter('wp_list_categories','add_class_from_slug');
但是,這並不工作 - 通過$category->slug
返回的文本在頁面呈現時退出。如果我在添加靜態文本(使用線像$replacement = 'class="myclass ';
,它呈現的罰款。
無奈的是,我可以在正確的位置wp-includes/classes.php
加入$class .= ' '.$category->slug;
得到我想要的輸出,但要避免訴諸這一點。
爲什麼我不能只使用$category->slug
在我的功能?變通方法,建議,進一步閱讀關於這個問題的?要補充,我對PHP。感謝一個非常基本的抓地力!
謝謝。這是我現在所做的,它完美的作品。通過在我的主題的'functions.php'文件中擴展'Walker_Category'來覆蓋'start_el()',可以完全控制我的類別列出的方式。 如果有人發現這篇文章想要做類似的事情,我發現這兩篇文章對理解Wordpress的「Walker」類是什麼以及如何修改/擴展它非常有用: http://scribu.net /wordpress/extending-the-category-walker.html http://wordpress.org/support/topic/how-can-i-get-wp_list_pages-separated-by-commas – poisontofu 2010-08-30 06:38:36
很高興聽到它爲你工作。 – Zahymaka 2010-08-30 21:50:29