我正在基于现有数据库表中的行生成帖子。
如果数据库中的一行得到更新,我将不得不更新相应的帖子。
问题是我必须找到帖子才能更新它,而我没有任何合适的关键字。。。一个机会是使用标题,但标题可以更改,因此这不是一个选项。对我来说,最好的选择是将相应数据库行中的密钥存储在wordpress帖子中(而不是作为帖子id,因为这可能会导致其他问题)。实现这一目标的最佳方式是什么?是否已经有此的辅助字段?
我正在基于现有数据库表中的行生成帖子。
如果数据库中的一行得到更新,我将不得不更新相应的帖子。
问题是我必须找到帖子才能更新它,而我没有任何合适的关键字。。。一个机会是使用标题,但标题可以更改,因此这不是一个选项。对我来说,最好的选择是将相应数据库行中的密钥存储在wordpress帖子中(而不是作为帖子id,因为这可能会导致其他问题)。实现这一目标的最佳方式是什么?是否已经有此的辅助字段?
每次更新帖子时,只需搜索包含此元条目的帖子。只需确保将最后一个值设置为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无效。
我希望我的搜索表单只显示按标记组织的结果。我知道你可以添加&tag=TAGNAME 但如何将其集成到表单中,以便我的网站只搜索包含与搜索框中输入的内容相同的标记的帖子?我在页面上有两个搜索,因此理想情况下,我希望能够通过HTML将其添加到表单中,而不是其他任何地方,但任何答案都可以:)谢谢