我正在开发一个插件,它不使用自定义的post类型,而是使用单独的数据库表。它是一个插件,显示课程列表,其中包含指向不同课程详细信息页面的链接,用户可以在其中订阅课程。
在当前状态下,我使用一个短代码将插件数据获取到带有自定义页面模板(page courses.php)的页面中。
我现在想要改变the_title()
动态地,根据插件显示的页面(课程列表、包含表单的课程详细信息页面、表单提交成功页面)。但每当我使用以下过滤器进行此操作时,页脚中指向其他页面的链接也会发生变化:
<?php
add_filter(\'the_title\', \'custom_page_title\');
function custom_page_title() {
return \'Custom Title\';
}
在页脚中编辑。php我有一个包含页脚链接的函数wp_nav_menu()
所以我可以在外观上定义它们>;菜单。但是使用上面的过滤器,页脚中的所有链接也会更改为“自定义标题”。但我只想更改页面的标题,而不影响页脚中的菜单链接。尝试添加条件标记in_the_loop()
页脚链接仍然受到影响,尽管它们不在循环中。
<?php
add_action( \'loop_start\', \'set_custom_title\' );
function set_custom_title() {
if ( in_the_loop() ) {
add_filter( \'the_title\', \'custom_page_title\' );
}
}
function custom_page_title() {
return \'Custom Title\';
}
类似于这个问题:filter the_title problem in nav, 只是受影响的链接位于页脚和in_the_loop()
不起作用。我怎样才能改变the_title()
只影响当前显示页面的标题,而不影响页脚中的链接?
编辑2-解决方案,所以我终于让它工作了:
<?php
add_action( \'loop_start\', \'set_custom_title\' );
function set_custom_title() {
add_filter( \'the_title\', \'wpse83525_filter_the_title\', 10, 2 );
}
function wpse83525_filter_the_title( $title, $id ) {
if ( \'page-listcourses.php\' == get_post_meta( $id, \'_wp_page_template\', true ) ) {
return \'Custom Title\';
}
return $title;
}
文件页面列出课程。php是我分配给名为“Courses”的静态页面的自定义帖子模板。我假设它以前不工作,因为静态页面的名称和自定义帖子模板的文件名是相同的。