如何在WordPress中覆盖get_post函数?

时间:2014-04-02 15:36:42

标签: php mysql sql wordpress

我的WordPress http://www.example.com/wp-admin/post.php?post=87&action=edit&lang=de-DE 中有这样的网址,我需要覆盖从表格wp_posts中选择ID的帖子。我在SQL中有另一个表,因为$ _GET [' lang']参数我需要使用此表中的数据,所以我需要覆盖整个函数,而不仅仅是WHERE部分。

当我从表中选择正确的帖子时,我想使用默认模板。 是否可以从被覆盖的函数返回数据并在默认的WordPress模板中使用它们?

1 个答案:

答案 0 :(得分:2)

根据您尝试覆盖的功能,WordPress支持。您可以通过插件或functions.php文件来实现,具体取决于您希望实现的功能(根据您的问题有点难以确定)

以下是可插入功能列表: http://codex.wordpress.org/Pluggable_Functions

以下是如何使用它们的教程: http://code.tutsplus.com/articles/understanding-wordpress-pluggable-functions-and-their-usage--wp-30189

在您发表评论后,我将添加此附录:

在您的情况下,听起来好像您想在functions.php文件中使用add_query_vars,以便Wordpress知道该查询字符串(GET var)。然后,您可以使用query_vars属性获取特定的var(lang)并使用它(以及get_results)来查询自定义表。

在function.php中添加查询变量:

function add_query_vars($vars) {
    $vars[] = "lang";
    return $vars;
}

add_filter('query_vars', 'add_query_vars');

这是您从模板文件中的URL或其他方式获取变量的方法:

$lang = get_query_var( 'lang' );

http://codex.wordpress.org/Function_Reference/get_query_var

然后你只需将你在get_results自定义查询中检索到的信息用于你的特定表...假设你的表有正确的前缀等...

https://codex.wordpress.org/Class_Reference/wpdb#Using_the_.24wpdb_Object