另一种方式。问题在于@david.binda 解决方案是:
您必须对许多内容进行硬编码(手动写入数据库凭据、表前缀…)
您不能使用内容过滤器(因此,如果您的页面中有短代码,您将看到一些[something]
而不是所需的内容……)当然可以加载wordpress环境,但是。。。
就在昨天,我写道an answer 将内容输出到文件中,然后在外部应用程序中使用。
因此,在WordPress根文件夹中,创建一个名为“tmp”的子文件夹。
此文件夹是从WP到应用程序的一种exchange文件夹。确保WordPress可以在此文件夹中写入文件。
在你的情况下,你可以save_post
筛选并创建文件:
add_action(\'save_post\', \'cache_page\');
function cache_page( $postid ) {
if ( defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE ) return;
$filename = trailingslashit(ABSPATH) . \'/tmp/page-4.inc\';
$content = apply_filters(\'the_content\', get_post_field(\'post_content\', 4 ) );
file_put_contents ( $filename , $content );
}
之后在应用程序中:
$path = \'wordpress/path/here/tmp/page-4.inc\';
$page_content = @file_get_contents($path) ? : \'\';
echo $page_content;
当然了,
you have to save again the page after adding the code to generate the file.
如果希望使用相同的方法,可以通过简单的编辑缓存所有页面:
function cache_page( $postid ) {
if ( defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE ) return;
$post = get_post($postid);
if ( $post->post_type != \'page\' ) return;
$filename = trailingslashit(ABSPATH) . \'/tmp/page-\' . $post->ID . \'.inc\';
$content = apply_filters(\'the_content\', $post->post_content );
file_put_contents ( $filename , $content );
}
然后在应用程序中编写如下函数
function wp_page( $id ) {
$path = \'wordpress/path/here/tmp/page-\' . $id . \'.inc\';
$page_content = file_exists($path) ? file_get_contents($path) ? : \'\';
echo $page_content;
}