Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wordpress 将_标题过滤器应用于帖子标题和后端自动社交共享插件,但不应用于导航菜单 挑战_Wordpress_Plugins_Filter_Action - Fatal编程技术网

Wordpress 将_标题过滤器应用于帖子标题和后端自动社交共享插件,但不应用于导航菜单 挑战

Wordpress 将_标题过滤器应用于帖子标题和后端自动社交共享插件,但不应用于导航菜单 挑战,wordpress,plugins,filter,action,Wordpress,Plugins,Filter,Action,我一直在尝试编写一个过滤器,用于(a)某个帖子类型的帖子标题和(b)同一个帖子类型的WordPress管理员后端,以供自动社交共享插件使用。 我已经非常接近了。我实现了: 1.仅对自定义帖子类型的帖子标题进行前置 2.为自定义打印类型标题和所有导航菜单项添加前缀 3.所有标题的前置(帖子、页面、导航菜单和后端自动共享插件) 最后的第三次尝试让我充满希望,但不管我使用什么函数、条件语句或组合,我都无法获得自定义帖子标题和后端社交共享插件,但无法获得导航菜单项 我的代码-我尝试过的 我尝试过不同的条

我一直在尝试编写一个过滤器,用于(a)某个帖子类型的帖子标题和(b)同一个帖子类型的WordPress管理员后端,以供自动社交共享插件使用。

我已经非常接近了。我实现了: 1.仅对自定义帖子类型的帖子标题进行前置 2.为自定义打印类型标题和所有导航菜单项添加前缀 3.所有标题的前置(帖子、页面、导航菜单和后端自动共享插件)

最后的第三次尝试让我充满希望,但不管我使用什么函数、条件语句或组合,我都无法获得自定义帖子标题和后端社交共享插件,但无法获得导航菜单项

我的代码-我尝试过的 我尝试过不同的条件,比如
is\u admin()
!是带有所有导航菜单ID的导航菜单
。我还尝试将帖子的ID与菜单的ID进行比较。最后,我还尝试将过滤器仅添加到
loop\u 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' );
*/
解决方案 解释 首先尝试一下:

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);
我注意到,在后端,我用来自动共享帖子的社交共享插件会返回警告,如
缺少参数2
注意:试图获取非对象的属性…
,因此我想到,与前端(导航菜单和循环)不同,在后端,显然,
$id
没有被传递到
标题
,因此我可以将其用作条件

为了我的目的,检查
$id
会告诉我,如果它是
真的
,我们就在前端,如果它是
假的
,那么我们就在后端后期视图

这段代码满足了我的需要(即,修改循环中的帖子标题,不修改导航菜单项,修改
标题供后端社交共享插件使用):

解决方案 解释 首先尝试一下:

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);
我注意到,在后端,我用来自动共享帖子的社交共享插件会返回警告,如
缺少参数2
注意:试图获取非对象的属性…
,因此我想到,与前端(导航菜单和循环)不同,在后端,显然,
$id
没有被传递到
标题
,因此我可以将其用作条件

为了我的目的,检查
$id
会告诉我,如果它是
真的
,我们就在前端,如果它是
假的
,那么我们就在后端后期视图

这段代码满足了我的需要(即,修改循环中的帖子标题,不修改导航菜单项,修改
标题,供后端社交共享插件使用):