有没有一种方法可以循环使用在自定义插件中创建的短代码数据源,就像在3d party前端设计插件中所遵循的那样?
function bs_test_fnc(){
$aData = array(
array(\'a\',\'b\',\'c\'),
array(\'a\',\'b\',\'c\'),
array(\'a\',\'b\',\'c\'),
);
return $aData;
}
add_shortcode(\'bs_resource_table_datasource_test\',\'bs_test_fnc\');
Explaination:
我的插件中的数据表不是自定义的帖子类型,尽管我想知道是否可以使用一些设计插件以某种方式使用这些数据生成一个propper动态表内容。但是这些pro插件版本都要花很多钱,而且它们似乎无法像我认为的那样连接到短代码。
那么你是如何做到这一点的
您是否将所有插件数据强制转换为自定义帖子类型,以便其他插件可以访问这些数据?还是有其他方法?
当然,我创建了简单的HTML表,并通过短代码显示数据,以测试后端功能,但这更像是对PHP的滥用,因为我通常使用模板引擎框架(与其他CMS一起使用)。最重要的是,这可能真的很难像这样正确地设计和显示。尤其是不快速或不可重复,我正在尝试WordPress,以便能够快速而漂亮地完成。
如果您能向我解释或链接一个合适的用例,我将不胜感激;“模板化”;就像在带有自定义WordPress插件的模板引擎中,可以与3d party插件合作,也可以使用模板引擎或其他WordPress工具。
分类法使得使用WordPress搜索和确定正确的方法变得非常困难。
SO网友:veritaS
我找到了一个适合我的解决方案tutorial
简而言之:
在插件中创建新文件并复制GamajoTemplate Loader Class
创建另一个文件,创建您自己的Gamajo类扩展名
<?php
/**
* Template loader for PW Sample Plugin.
*
* Only need to specify class properties here.
*
*/
class PW_Template_Loader extends Gamajo_Template_Loader {
/**
* Prefix for filter names.
*
* @since 1.0.0
* @type string
*/
protected $filter_prefix = \'pw\';
/**
* Directory name where custom templates for this plugin should be found in the theme.
*
* @since 1.0.0
* @type string
*/
protected $theme_template_directory = \'pw-templates\';
/**
* Reference to the root directory path of this plugin.
*
* @since 1.0.0
* @type string
*/
protected $plugin_directory = PW_SAMPLE_PLUGIN_DIR;
}
将此添加到您的插件
<?PHP define( \'PW_SAMPLE_PLUGIN_DIR\', plugin_dir_path( __FILE__ ) );
require PW_SAMPLE_PLUGIN_DIR . \'class-gamajo-template-loader.php\';
require PW_SAMPLE_PLUGIN_DIR . \'class-pw-template-loader.php\';
function pw_sample_shortcode() {
$templates = new PW_Template_Loader;
}
add_shortcode( \'pw_sample\', \'pw_sample_shortcode\' );
在插件根目录中创建模板文件夹创建模板文件。包含以下示例的插件模板文件夹中的php
<h2><?php echo $data->section_title;?></h2>
现在,您可以按如下方式访问模板,并使用快捷码将其加载到前端设计插件或您自己的自定义主题中,同时使用数据填充它们
function pw_sample_shortcode() {
$templates = new PW_Template_Loader;
$args = array( \'section_title\' => \'hello world\' );
ob_start();
$templates->set_template_data($args); // assign variable array before calling templates
$templates->get_template_part( \'content\', \'header\' );
$templates->get_template_part( \'content\', \'middle\' );
$templates->get_template_part( \'content\', \'footer\' );
return ob_get_clean();
}
add_shortcode( \'pw_sample\', \'pw_sample_shortcode\' );