我一直在尝试编写应用(前置字符串)的过滤器(a)发布某个帖子类型的标题,(b)写入相同的帖子类型WordPress管理员后端以供汽车社交使用分享插件。
我已经非常接近了。我已经实现了: 1.仅预设自定义post_type帖子标题 2.前置于custom_post类型标题和所有导航菜单项 3.前置所有标题(帖子,页面,导航菜单和后端自动共享插件)
最后的第三次尝试让我非常满怀希望,但是,无论我使用的功能,条件陈述或组合,我都无法获得 custom_post标题和后端社交分享插件,但< em> not 导航菜单项。
我尝试了不同的条件,例如is_admin()
和!is_nav_menu
以及所有导航菜单ID。我还尝试将帖子的ID与菜单的ID进行比较。最后,我还尝试将过滤器仅添加到loop_start
,如果与其他语句结合使用,这似乎很有希望。我会清理我的代码以供审核,但我现在就这样离开,希望看看我尝试了什么,也许我在这些方法中出错了。
// , $id = NULL
function append_album_review_to_title( $title ) {
global $post;
global $dont_apply_title_filter;
$text = 'Album Review: ';
$prepended_title = $text . $title;
/*
$nav_menus_obj = wp_get_nav_menus();
$nav_menu_ids = '';
foreach( $nav_menus_obj as $nav_menu ) {
$nav_menu_ids .= $nav_menu->term_id . ',';
}
rtrim($nav_menu_ids, ',');
*/
// if ( get_post_type( $post->ID ) == 'album_review' && in_the_loop() ){
// if ( get_post_type( $post->ID ) == 'album_review' && $id == get_the_ID() ){
// if ( !is_nav_menu( '32057,32058,35135,32054,32056' ) ) {
// if ( get_post_type( $post->ID ) == 'album_review' && is_nav_menu( $id ) ) {
if ( get_post_type( $post->ID ) == 'album_review' && !$dont_apply_title_filter ) {
//print_r( $nav_menu_ids );
//print_r( is_nav_menu( $nav_menu_ids ) );
return $prepended_title;
/*
} elseif ( get_post_type( $post->ID ) == 'album_review' ) {
return $title;
*/
} else {
return $title;
};
}
add_filter('the_title', 'append_album_review_to_title');
//add_action('save_post', 'custom_post_type_title', 100);
/*
function set_custom_title() {
add_filter( 'the_title', 'append_album_review_to_title', 10, 2 );
}
add_action( 'loop_start', 'set_custom_title' );
*/
答案 0 :(得分:0)
function append_album_review_to_title( $title, $id = NULL ) {
if ($id) {
if ( get_post_type( $id ) == 'album_review' ){
return 'Album Review: ' . $title;
} else {
return $title;
}
} else {
return 'Album Review: ' . $title;
};
}
add_filter('the_title', 'append_album_review_to_title', 10, 2);
首先尝试这个:
function append_album_review_to_title( $title, $id ) {
if ( get_post_type( $id ) == 'album_review' ){
return 'Album Review: ' . $title;
} else {
return $title;
}
}
add_filter('the_title', 'append_album_review_to_title', 10, 2);
我注意到在后端,我用来自动分享帖子的社交分享插件会返回missing parameter 2
和Notice: Trying to get property of non-object...
等警告,因此我发现与前端不同(导航菜单和循环),在后端,显然$id
没有被传递给the_title
,因此我可以将其用作条件。
为了我的目的,检查$id
会告诉我,如果是true
,我们就在前端,如果是false
,那么我们会在后端查看
此代码完成了我的需要(即,在循环中修改帖子标题,不修改导航菜单项,并修改the_title
以供后端社交共享插件使用):