我在一个页面上使用wp\\u list\\u页面生成了几个菜单。我只想在其中的一个实例上向最后一个菜单项添加一个类。
例如,我在这里有一个菜单:
<ul id="headerlinks">
<?php wp_list_pages(\'title_li=&include=24,26,28,30\'); ?>
</ul>
还有一个类似的例子:
<ul id="sublinks">
<?php wp_list_pages(\'title_li=&include=4,6,8,10,12,14,20,22\'); ?>
</ul>
在我的功能中。我正在使用以下php文件将类添加到wp\\u list\\u页面的第一个和最后一个菜单项中:
// Adds classes to first and last item in list of wp_list_pages
function add_markup_pages($output) {
$output= preg_replace(\'/page_item/\', \' first-page-item page-item\', $output, 1);
$output=substr_replace($output, " last-page-item page_item", strripos($output, "page_item"), strlen("page_item"));
return $output;
}
add_filter(\'wp_list_pages\', \'add_markup_pages\');
但是,我只想将其应用于#headerlinks菜单。如何使用上述函数确定目标?
SO网友:kaiser
没有向筛选器传递任何ID,但您可以检查输出并使用debug_backtrace()
要根据回溯结果添加所需内容,请执行以下操作:
function wpse29645_pageslist_filter( $output, $r )
{
echo \'<pre>\';
var_dump( debug_backtrace( $output ) );
echo \'<hr />\';
var_dump( $output );
echo \'<hr />\';
var_dump( $r );
echo \'</pre>\';
}
add_filter( \'wp_list_pages\', \'wpse29645_pageslist_filter\', 10, 2 );
// Just a test case
function wpse29645_pageslist()
{
wp_list_pages();
}
add_action( \'the_content\', \'wpse29645_pageslist\' );
只需将其转储到函数php中(不含测试用例),并检查提供的数据。
<小时>EDIT: 在使用过滤器时,唯一真正重要的是在最终调用过滤器函数时,添加允许在core中修改的参数的确切数量:10, 2
是优先级(&P);参数数。
这样,您就可以轻松地使用不同的过滤器。只需在函数中添加一个函数。php文件,其中包含的参数为apply_filters
已调用。那就var_dump/print_r/var_export()
查看您可以更改的参数。其余将通过WP-无缝流程完成。不是吗?
另一种选择:如果可能的话,试试定制步行器。