Shortcode Strategy

时间:2012-07-07 作者:Poe

我希望将另一个数据库中的数据插入到我的帖子中,并考虑使用短代码。示例帖子:

[imdb id="123" name] was born [imdb id="123" birthday] in [imdb id="123" birth_location].
我想缓存结果,一旦检索到,就不需要再运行短代码操作了。有没有什么好的策略可以让这种事情更有效率?

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

无论哪种方式,如果您不想每次访问页面时都在外部数据库上持续运行相同的查询,您都需要将从外部数据库检索到的数据存储在WordPress数据库中。

您可以使用自定义字段(post meta)将数据存储在WordPress数据库中,并使用以下函数add_post_metaupdate_post_meta 或通过使用Transient API 这将允许您在设置的时间段内缓存所述数据,使该数据过期并从数据库中清除,还可以选择在外部源上重新运行查询。

当然,要考虑到您的代码需要包括条件逻辑,其中指定了条件逻辑;

if no transient data exists for the given data > fetch data from external source

下面是使用中的瞬态API的一些示例代码;

<?php
// Get any existing copy of our transient data
if ( false === ( $special_query_results = get_transient( \'special_query_results\' ) ) ) {
    // It wasn\'t there, so regenerate the data and save the transient
     $special_query_results = new WP_Query( \'cat=5&order=random&tag=tech&post_meta_key=thumbnail\' );
     set_transient( \'special_query_results\', $special_query_results );
}

// Use the data like you would have normally...
?>
在您的实例中,将对WP\\u Query的调用替换为外部数据库源。

然后,您的短代码可以是一个包装器,它允许您在逐篇文章的基础上任意插入数据,当然您也需要创建您的短代码,我想您大概知道这一点。

结束

相关推荐

在修改[Caption]时,Add_Filter()和Add_ShortCode()有什么固有的区别吗?

上下文是在媒体中找到的[标题]快捷码。php,其中包含img_caption_shortcodeimg\\u caption\\u快捷码还包括以下几行: $output = apply_filters(\'img_caption_shortcode\', \'\', $attr, $content); if ( $output != \'\' ) return $output; 我试图操纵标题短代码的输出,我突然想到我可以过滤函数,或者我可以添加\\u短代码来替换它-有什么区