插件允许在帖子/页面中添加自定义字段。
在帖子/页面中,我创建了一个自定义字段,以便用户可以在该字段上输入内容。
如果用户输入这个字段,帖子/页面将在屏幕上显示这个内容,而不是通过帖子/页面编辑器输入的主要内容。
谁能告诉我怎么做?
这是一个插件,所以我不能编辑模板。
我尝试过添加过滤器->内容,但它似乎只适用于帖子类型,如何使其同时适用于帖子/页面类型?
add_meta_box(
\'st-page-builder\', // Unique ID
esc_html__( \'Page Builder\', \'page-builder\' ), // Title
\'pageBuilderCallBack\', // Callback function
\'post\', // Admin page (or post type)
\'advanced\', // Context
\'default\' // Priority
);
function pageBuilderCallBack($object, $box) {
wp_nonce_field( basename( __FILE__ ), \'page-builder-nonce\' );
$page = get_post_meta($object->ID, \'page_builder\', true);
require_once \'form-input.php\';
}
function displayCustomContent() {
// how to replace main post content with custom content ?
if (is_page() || is_single())
{
global $post;
$pageBuilderContent = trim(get_post_meta($post->ID, \'page_builder\', TRUE));
if ($pageBuilderContent) {
return $pageBuilderContent;
}
}
return $content;
}
add_filter(\'the_content\', \'displayCustomContent\');
最合适的回答,由SO网友:s_ha_dum 整理而成
您只需检查该自定义字段,并返回该字段,而不是post内容。
function displayCustomContent() {
if (!is_front_page()) return $content;
// how to replace main post content with custom content ?
global $post;
$special_content = get_post_meta($post->ID,\'page_builder\',true);
if (!empty($special_content)) {
// remove_all_filters(\'the_content\');
return $special_content;
}
return $content;
}
你唯一想做的另一件事是先运行你的过滤器。。。
add_filter(\'the_content\', \'displayCustomContent\', 1);
。。。然后取消注释
remove_all_filters(\'the_content\');
在回调函数内部。这将减少不必要的开销,并有助于避免其他内容过滤器更改您的内容。