Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从WordPress中的插件加载模板_Php_Wordpress_Wordpress Theming_Custom Wordpress Pages_Wordpress Plugin Creation - Fatal编程技术网

Php 从WordPress中的插件加载模板

Php 从WordPress中的插件加载模板,php,wordpress,wordpress-theming,custom-wordpress-pages,wordpress-plugin-creation,Php,Wordpress,Wordpress Theming,Custom Wordpress Pages,Wordpress Plugin Creation,我正在尝试制作我的第一个插件,但我被卡住了。这是我的想法。 当我的插件被激活时,它将为该帖子类型创建一个帖子类型和两个分类法(在我的例子中,帖子类型名称是“Ads”)。 另外,我创建了两个模板页面,一个用于显示所有广告帖子类型文章的列表,另一个用于同一帖子类型的单个页面 现在我的问题是如何告诉WordPress在插件激活时从插件文件夹而不是主题文件夹中查找模板。? 这是我可以在插件文件中执行的操作,还是我必须为此创建另一个文件?这应该满足您的要求: 首先,这个钩子告诉WordPress哪个是插件

我正在尝试制作我的第一个插件,但我被卡住了。这是我的想法。 当我的插件被激活时,它将为该帖子类型创建一个帖子类型和两个分类法(在我的例子中,帖子类型名称是“Ads”)。 另外,我创建了两个模板页面,一个用于显示所有广告帖子类型文章的列表,另一个用于同一帖子类型的单个页面

现在我的问题是如何告诉WordPress在插件激活时从插件文件夹而不是主题文件夹中查找模板。?
这是我可以在插件文件中执行的操作,还是我必须为此创建另一个文件?

这应该满足您的要求:

首先,这个钩子告诉WordPress哪个是插件中的单个CPT模板

从这个答案可以得到单_模板挂钩以及如何加载它

如果在插件的其他地方使用“plugin\u dir\u path(FILE),请定义一个常量来替换它,如下所示:

define('YOUR_PLUGIN_DIR_PATH', trailingslashit(plugin_dir_path( __FILE__ )) );
function load_archive_ads_template( $archive_template ) {
     global $post;

     if ( is_post_type_archive ( 'ads' ) ) {
          $archive_template = YOUR_PLUGIN_DIR_PATH . 'templates/archive-ads.php';
     }
     return $archive_template;
}

add_filter( 'archive_template', 'load_archive_ads_template', 10, 1 ) ;

然后对于ads存档模板,“存档模板”挂钩,如下所示:

define('YOUR_PLUGIN_DIR_PATH', trailingslashit(plugin_dir_path( __FILE__ )) );
function load_archive_ads_template( $archive_template ) {
     global $post;

     if ( is_post_type_archive ( 'ads' ) ) {
          $archive_template = YOUR_PLUGIN_DIR_PATH . 'templates/archive-ads.php';
     }
     return $archive_template;
}

add_filter( 'archive_template', 'load_archive_ads_template', 10, 1 ) ;
正式文件:


这是未经测试的,但应该有效,但是,请让我知道。

是的,这需要一些调整。在单个页面和归档页面中,都应该说“ads”而不是“ad”,而不是“load\u movie\u template”应该是“load\u single\u ad\u template”。对于归档文件的命名,我认为最好使用归档广告而不是ads archive,但总而言之,您帮助我解决了我的问题。非常感谢。你的更新是对的,我没有注意到广告中的复数形式,这是你的问题,对不起,对于任何阅读的人来说,必须使用准确的自定义帖子类型slug,否则它将无法工作。您对归档模板的命名也更接近约定,因此比最初使用的命名更好。为找到答案的其他人编辑。