另一种不调用页面属性的解决方案:
这些插件在这里你可以看到两个小插件(我专门为你的问题写的)。
输入第一个是RW元盒库的依赖项。您只需更改所需内容(用户上限检查)并将其上载到您的插件文件夹。您需要做的更改非常简单:搜索正确的User Role or Capability 并将其添加到当前可以阅读的位置\'edit_theme_options\'
. 它应该与你的设计者的能力相匹配,而不是你的作者。
它添加了两个textarea元框。
<?php
! defined( \'ABSPATH\' ) AND exit;
/** Plugin Name: (#65707) »kaiser« Add Meta Boxes */
function wpse65707_add_meta_boxes()
{
// Don\'t add it for all users, but only for your designers
if (
! current_user_can( \'edit_theme_options\' ) # CHANGE ME!!!
OR ! class_exists( \'RW_Meta_Box\' )
)
return;
$prefix = \'wpse65707_\';
$meta_boxes[] = array(
// Meta box id, UNIQUE per meta box
\'id\' => \'cover\'
// Meta box title - Will appear at the drag and drop handle bar
,\'title\' => \'Designers Space\'
// Post types, accept custom post types as well - DEFAULT is array(\'post\'); (optional)
,\'pages\' => array( \'post\' )
// Where the meta box appear: normal (default), advanced, side; optional
,\'context\' => \'normal\'
// Order of meta box: high (default), low; optional
,\'priority\' => \'high\'
// List of meta fields
,\'fields\' => array(
array(
\'name\' => \'Styles\'
,\'desc\' => "Only valid CSS here"
,\'id\' => "{$prefix}styles"
,\'type\' => \'textarea\'
,\'std\' => "h1 { color: #009ee0; }"
,\'cols\' => "40"
,\'rows\' => "8"
),
array(
\'name\' => \'MarkUp\'
,\'desc\' => "Only valid HTML here"
,\'id\' => "{$prefix}markup"
,\'type\' => \'textarea\'
,\'std\' => "<h1>Hello Me!</h1>"
,\'cols\' => "40"
,\'rows\' => "8"
)
)
);
# Add additional Meta Boxes here.
# For example a drop-down with a list of users that
# have a custom role of "Designer"
# (Hint) Use the "Members" plugin for that and
# WP_User_Query to get the users as values
foreach ( $meta_boxes as $meta_box )
new RW_Meta_Box( $meta_box );
}
# Performance: Only load on post edit & new admin UI screens.
add_action( \'load-post-new.php\', \'wpse65707_add_meta_boxes\' );
add_action( \'load-post.php\', \'wpse65707_add_meta_boxes\' );
输出这个现在关心我们的输出。
它的首要任务是将我们的风格添加到wp_head
-钩这样,我们就可以注入设计师添加的任何自定义样式。
它所做的第二件事是将当前帖子ID添加到post_class
的筛选器post_class();
模板标记。这样,我们就可以轻松地只针对当前的帖子内容,而不针对其他内容。
rd功能是一个解析器。此解析器允许设计者通过抽象层(Custom)添加模板标记%Template Tags%
. 所以在wpse65707_custom_post_styles_parser
将替换为set template标记。函数本身是的筛选器回调the_content
, 因此,无论你使用什么主题,你都不需要改变任何东西来让它工作。
<?php
! defined( \'ABSPATH\' ) AND exit;
/** Plugin Name: (#65707) »kaiser« Custom Post Styles */
// Add custom styles to the `wp_head` hook in the header.php file.
function wpse65707_custom_post_styles()
{
$styles = get_post_meta( get_the_ID(), \'wpse65707_styles\', true );
$styles = str_replace(
\'%ID%\'
,get_the_ID()
,$styles
);
return print "<style type=\'text/css>{$styles}</style>";
}
add_action( \'wp_head\', \'wpse65707_custom_post_styles\' );
// Add the plain ID to the post classes for easier styling
// Prevents overriding everything else outside
function wpse65707_post_class ( $classes )
{
$classes[] = get_the_ID();
return $classes;
}
add_filter ( \'post_class\' , \'wpse65707_post_class\' );
// Parse the content to add Template tags on the fly
function wpse65707_custom_post_styles_parser( $content )
{
$markup = get_post_meta( get_the_ID(), \'wpse65707_markup\', true );
return strtr(
$markup
,array(
\'%CONTENT%\' => $content
,\'%AUTHOR%\' => get_the_author()
// Add other template tags here
)
);
}
add_filter( \'the_content\', \'wpse65707_custom_post_styles_parser\' );
模板:
single.php
&;
header.php
只有这两个文件中的以下模板标记才是使用主题时最重要的内容:
header.php
must 有一个wp_head()
标记single.php
must 使用post_class();
post container div/article HTML标记上的函数single.php
must 使用the_content();
以显示其内容现在它是如何工作的很简单:每个模板标记都允许在wpse65707_custom_post_styles_parser()
, 将与您的设计师所写的内容进行交换。// Example content for the "MarkUp"-Meta Box
<h1>Hello Me!</h1>
<h2>A fairy tale by %AUTHOR%</h2>
This is story of love and joy.
%CONTENT%
<p>We hope you liked it.</p>
现在%CONTENT%
替换为实际帖子内容,并%AUTHOR%
, 具有作者显示名称。请随意扩展它。重要的是,您的设计师只需使用标签should 用于为其样式添加前缀:%ID%
标签这可以确保他们没有针对当前文章容器之外的任何内容。
就是这些人