如何在通过帖子2链接的帖子之间同步标签?

时间:2013-08-21 作者:Evren Kiefer

我面临着一个棘手的问题,似乎无法在网络上丰富的社区知识中找到解决方案。我有两个自定义帖子类型“Person”和“Activities”。我使用posts 2 posts(插件)将人们与他们的各种活动联系起来,反之亦然。

我有适用于活动的分类法。它们描述了实践和兴趣领域。例如,使用它们,我希望能够获得一份参与标有“起重机”的活动的人员列表。其中,“起重机”是我的标签式自定义分类法中感兴趣的领域的一部分。

我怀疑最实用的方法是将分类法应用于这两种帖子类型,并使它们自动从链接的活动同步到个人。有没有办法做到这一点?

你好,埃夫伦

编辑:我的p2p\\u register\\u connection\\u类型如下

function ghunige_connection_types() {
    p2p_register_connection_type( array(
        \'name\' => \'profile_to_activity\',
        \'from\' => \'ghunige_profile\',
        \'to\' => \'ghunige_activity\',
        \'reciprocal\' => true,
        \'title\' => array( \'from\' => __(\'Participates in\', \'ghunige_dir_domain\'), \'to\' => __(\'Participants\', \'ghunige_dir_domain\') )

    ) );
}

1 个回复
SO网友:gmazzap

我认为有两种方法可以解决你的问题。第一种是依赖P2P功能,如each_connected (参见this 并在运行“活动”的分类查询后检索连接的“人员”。

也许这个解决方案可以更简单、更快、更直接。

第二个解决方案是您在问题中所说的:将分类法应用于这两种帖子类型。

要同步分类术语,可以挂接到“added\\u term\\u relationship”操作中

   add_action( \'added_term_relationship\', \'sync_my_tax\', 20, 2);

   function sync_my_tax ( $object_id, $tt_id ) { 
     $post = get_post($object_id);
     if ( $post->post_type == \'activities\' ) {
       global $wpdb;
       $taxonomy = $wpdb->get_var("SELECT taxonomy FROM $wpdb->term_taxonomy WHERE term_taxonomy_id = " . $tt_id);
       if ( $taxonomy != \'your_taxonomy\' ) return; // put here your tax name
       $related = p2p_type( \'person_to_activities\' )->get_related( $post );  
       if ( ! empty($related) ) { foreach ( $related as $person ) {
         $wpdb->insert( $wpdb->term_relationships, array( \'object_id\' => $person->ID, \'term_taxonomy_id\' => $tt_id ) );
       } }
     }
   }
我不能保证p2p_type 调用此代码是正确的,因为您没有发布p2p_register_connection_type() 呼叫

还要注意,所有代码都是untested, 所以,在您完全测试之前,不要在生产现场使用它。

结束

相关推荐

使用CDN Sync工具插件时出错

既然wp-supercache对CDN有了一些内置支持,我已经尝试使用CDN同步工具将文件初始上载到Cloudfront。但是,我在同步时出现了两组错误(我不得不使用强制上载,因为CDN同步工具认为我的所有文件都已上载)。cURL错误:无法从文件/应用程序中打开/读取本地数据(26)。但此错误实际上并没有阻止上载文件无法打开流:在/var/www/xxxxx/wp-content/plugins/cdn-sync-tool/lib/awssdk/lib/requestcore/requestcore中打开