如何在使用wp_INSERT_POST创建帖子时存储额外(代理)ID?

时间:2013-03-05 作者:nsn

我正在基于现有数据库表中的行生成帖子。

如果数据库中的一行得到更新,我将不得不更新相应的帖子。

问题是我必须找到帖子才能更新它,而我没有任何合适的关键字。。。一个机会是使用标题,但标题可以更改,因此这不是一个选项。对我来说,最好的选择是将相应数据库行中的密钥存储在wordpress帖子中(而不是作为帖子id,因为这可能会导致其他问题)。实现这一目标的最佳方式是什么?是否已经有此的辅助字段?

1 个回复
最合适的回答,由SO网友:kaiser 整理而成

概念

正如我目前所做的,我发现最简单的部分是从您的;“来源”-数据库作为后置元值。

每次更新帖子时,只需搜索包含此元条目的帖子。只需确保将最后一个值设置为true 当您添加post元条目时,因为您需要能够查询它。

代码示例(粗略)

下面是我所做的:

$query = new WP_Query( array(
     \'post_type\'   => \'_YOUR_POST_TYPE_\'
    ,\'post_status\' => array(
         \'publish\'
        ,\'future\'
        ,\'pending\'
     )
    ,\'meta_query\'  => array( array(
         \'key\'       => \'_YOUR_KEY_\'
        ,\'value\'     => \'_SEARCHED_ID_\'
        ,\'compare\'   => \'EXISTS\'
        ,\'type\'      => \'NUMERIC\'
     ) )
    #,\'fields\'     => \'ids\'
) );
然后你可以检查$query->found_posts (或者是$query->number_posts?) 看看你有没有得到一个职位。如果是这样,只需检查它并更新(或删除)分类术语、发布数据和发布元数据(以防您在远程源/数据库上更改了某些内容)。

如果您只想检查帖子是否存在(这意味着:您正在插入,但没有更新或删除帖子数据),只需取消最后一行的注释fields 在上面WP_Query. 这样,查询速度会更快,结果会返回一个ID或空数组。然后可以跳过帖子(如果是ID)或插入帖子(如果是空数组)。

Final Note: 当然,你必须更换_YOUR_KEY_, _SEARCHED_ID__YOUR_POST_TYPE_. 您还必须注意,您正在将其保存为int 值,作为NUMERIC 键入else无效。

结束

相关推荐

Search posts by Tag

我希望我的搜索表单只显示按标记组织的结果。我知道你可以添加&tag=TAGNAME 但如何将其集成到表单中,以便我的网站只搜索包含与搜索框中输入的内容相同的标记的帖子?我在页面上有两个搜索,因此理想情况下,我希望能够通过HTML将其添加到表单中,而不是其他任何地方,但任何答案都可以:)谢谢