你好@webcodeslinger:
下面是用于加载新闻和事件的基本MySQL查询的外观(这与WordPress的实际功能相比大大简化):
SELECT * FROM wp_posts WHERE post_type IN (\'news\',\'events\')
取而代之的是这样的内容(MySQL中有更高性能的方法,但WordPress中的方法更复杂,对于大多数网站,你永远不会注意到有什么不同):
SELECT * FROM wp_posts WHERE post_type IN (\'news\',\'events\')
OR (post_type=\'stories\' AND ID IN
(SELECT post_id FROM wp_postmeta WHERE meta_key=\'mark-as-news\')
)
所以。。。要将额外的SQL添加到主循环的查询中,请使用
\'posts_where\'
钩您可以在主题的
functions.php
文件(在文件底部即可)或
.php
如果您正在创建插件,则插件的文件:
add_action(\'posts_where\',\'yoursite_posts_where\',10,2);
function yoursite_posts_where($where,$query) {
global $wp_the_query;
if (is_home() && $query===$wp_the_query) { // This means home page and the main loop
global $wpdb;
$where .= " OR ({$wpdb->posts}.post_type=\'actor\' AND " .
"{$wpdb->posts}.ID IN (" .
"SELECT post_id FROM {$wpdb->postmeta} " .
"WHERE meta_key=\'mark-as-news\')) ";
}
return $where;
}