如果使用以下插件在保持主题完整的情况下创建虚拟页面wp-virtual-page-tutorial, 怎么可能。css文件是否应用于此虚拟页面?
如何使用将虚拟页名称用作条件的if语句来实现这一点?
任何帮助都将不胜感激。
以下是创建虚拟页面的代码:
Class VPTutorial {
function __construct() {
register_activation_hook( __FILE__, array( $this, \'activate\' ) );
add_action( \'init\', array( $this, \'rewrite\' ) );
add_filter( \'query_vars\', array( $this, \'query_vars\' ) );
add_action( \'template_include\', array( $this, \'change_template\' ) );
}
function activate() {
set_transient( \'vpt_flush\', 1, 60 );
}
function rewrite() {
add_rewrite_endpoint( \'dump\', EP_PERMALINK );
add_rewrite_rule( \'^the-page$\', \'index.php?vptutorial=1\', \'top\' );
if(get_transient( \'vpt_flush\' )) {
delete_transient( \'vpt_flush\' );
flush_rewrite_rules();
}
}
function query_vars($vars) {
$vars[] = \'vptutorial\';
return $vars;
}
function change_template( $template ) {
if( get_query_var( \'dump\', false ) !== false ) {
//Check theme directory first
$newTemplate = locate_template( array( \'template-dump.php\' ) );
if( \'\' != $newTemplate )
return $newTemplate;
//Check plugin directory next
$newTemplate = plugin_dir_path( __FILE__ ) . \'templates/template-dump.php\';
if( file_exists( $newTemplate ) )
return $newTemplate;
}
if( get_query_var( \'vptutorial\', false ) !== false ) {
$newTemplate = locate_template( array( \'template-vptutorial.php\' ) );
if( \'\' != $newTemplate )
return $newTemplate;
//Check plugin directory next
$newTemplate = plugin_dir_path( __FILE__ ) . \'templates/template-vptutorial.php\';
if( file_exists( $newTemplate ) )
return $newTemplate;
}
//Fall back to original template
return $template;
}
}
new VPTutorial;
SO网友:Jacob Peattie
你可以加入wp_enqueue_scripts
和使用wp_enqueue_style()
与通常的方式相同,但使用相同的条件更改模板以有条件地将样式表排队:
if ( get_query_var( \'dump\', false ) !== false ) {}
因此,您可以使用以下方法加载样式表:
function enqueue_stylesheet() {
if ( get_query_var( \'dump\', false ) !== false ) {
wp_enqueue_style( \'dump\', \'path/to/css/file.css\' );
}
}
和你的另一半一起
add_action()
电话:
add_action( \'wp_enqueue_scripts\', array( $this, \'enqueue_stylesheet\' ) );