我对OOP完全陌生,但我试图通过创建一个简单的Recipes插件来深入了解。我添加了一个Recipes自定义帖子类型和一些元字段,现在我正在尝试创建一些模板文件来显示recipe元和内容。要做到这一点,我认为创建一个类来获取特定帖子的所有元是有用的。
为了测试,我创建了一个模板文件,用于在帖子内容后用单个元值回显一句话:
$recipe = new Wp_Recipes_Recipe;
echo \'<p>The prep time for this recipe is \' . $recipe->$recipeprep . \'</p>\';
我在plugin dir>public中创建了一个名为“class wp recipes recipe.php”的新文件,其中包含以下内容:
class Wp_Recipes_Recipe {
public function __construct( $post_id ) {
$this->$recipemeta = get_post_custom($post_id);
$this->$recipeprep = $this->$recipemeta[\'_rcp-prep-time\'][0];
}
}
我想我需要添加一些代码来指定包含我的新文件,但我不知道该放在哪里。我已经尝试将文件的“require\\u once”放在includes文件夹的load\\u dependencies()函数中。无论我尝试什么,我试图显示的元值都不会显示,我的努力唯一值得注意的效果是wp管理栏不再显示。
我可能完全走错了方向,但任何指导都将不胜感激!谢谢
最合适的回答,由SO网友:cameronjonesweb 整理而成
构造函数要求在类安装时将post ID传递给类,请尝试以下操作
$recipe = new Wp_Recipes_Recipe( get_the_ID() );
SO网友:Jacob Peattie
当WordPress加载插件时,它只会自动加载主插件文件。顶部有这个的那个:
<?php
/**
* Plugin Name: YOUR PLUGIN NAME
*/
如果在其他文件中有要使用的函数或类定义,则需要将它们包含在此文件中。如果您的类文件是
public/class-wp-recipes-recipe.php
, 然后你会像这样包括它,使用
plugin_dir_path()
:
<?php
/**
* Plugin Name: YOUR PLUGIN NAME
*/
require_once plugin_dir_path( __FILE__ ) . \'public/class-wp-recipes-recipe.php\';
现在,在加载插件后,您的类可以在WordPress中的任何位置使用。
您可能希望将include放入函数中,只在需要时才包含它,甚至可以尝试使用自动加载程序,但这是将PHP文件加载到插件中所需的最低要求。
最后,您不应该使用Wp_
您自己的类和函数的前缀。前缀的目的是为它们命名名称,以避免与其他主题、插件和WordPress本身发生冲突。虽然WordPress不太可能包含名为Wp_Recipes_Recipe
, 你应该Wp_
保留并使用您自己的唯一前缀(甚至namespaces, WordPress并不需要PHP 5.6)。