为什么我不能从admin视图更新post meta?

tyu7yeag  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(358)

我试图在我的wordpress网站上以编程方式生成数据。我将wpalchemy用于我的元数据库,并将posts-to-posts插件用于post-to-post关系。
在我的生成函数中,我生成了一个名为“songs”的自定义post类型,所有post类型都连接到一个名为“artists”的post类型的特定post。我正在使用 p2p_type('songs_to_artist')->connect($song_id, $artist_id, ['date' => current_time ('mysql')]) 为我生成的每首歌连接两个帖子。我的问题是,在我运行了这个函数之后,我不能再在backend edit post视图中从我的metabox更新艺术家元数据。
我为自己做了一些挖掘,发现了一些结果:
如果我运行函数而不在函数末尾建立连接,那么一切都可以正常工作。
所有生成的歌曲都会连接到他们的艺术家,尽管我遇到了艺术家元数据不更新的问题。
我可以使用函数更新元数据 update_post_meta() 或者直接在数据库中更新。
所描述的元数据不更新的效果发生在创建到特定艺术家的937个“songs-to-artist”连接之后。
在此过程中没有抛出错误。
有其他人见过这个吗?我找不到任何其他人描述这种行为。
提前多谢了!

gmxoilav

gmxoilav1#

问题是,当连接太多时,在编辑页上呈现的数据太多,导致posteta无法保存,因为站点的所有连接数据都被减慢了速度。一个简单的修复方法是以下代码:

add_filter( 'p2p_admin_box_show', 'toggle_connection_view', 10, 3 );
function toggle_connection_view( $show, $ctype, $post ) {

    if ( $ctype->name == 'songs_to_artist' ) {
        $show = false;
    }

    return $show;
}

这就从admin edit视图中删除了特定的卡,极大地加快了速度并消除了我描述的问题。

相关问题