我正在写一篇关于使用R语言做一些应用统计的教程。一个例子是:
http://mcmcinirt.stat.cmu.edu/archives/223
我希望从Web服务器上的本地文件加载所有源代码块。这样,我就可以使用git将它们与实际用于开发示例的文件同步。目前,我在我的机器上编写代码,生成图表/检查它是否工作,然后将最终代码复制到博客的文本中。这会导致重复问题。
有没有可能避免这种代码重复?(或者是我建议的方式,或者是更友好的方式?)
我正在写一篇关于使用R语言做一些应用统计的教程。一个例子是:
http://mcmcinirt.stat.cmu.edu/archives/223
我希望从Web服务器上的本地文件加载所有源代码块。这样,我就可以使用git将它们与实际用于开发示例的文件同步。目前,我在我的机器上编写代码,生成图表/检查它是否工作,然后将最终代码复制到博客的文本中。这会导致重复问题。
有没有可能避免这种代码重复?(或者是我建议的方式,或者是更友好的方式?)
我不会为此使用媒体上传程序,因为您想“使用git将它们与我实际使用的文件同步”。没有直接的方法可以同步通过上传器上传的文件,或者更新/替换这些文件。这方面的核心功能相当有限。不管怎样,你都需要进入服务器来更新文件,如果你的站点存储在年/月文件夹中,仅仅查找文件将很麻烦。
我会跳过这一麻烦,为R文件创建一个目录,并用一个短代码加载它们:
function srcfile_shortcode($atts=\'\',$content=\'\') {
$uploads = wp_upload_dir();
$file = $uploads[\'basedir\'].\'/rfiles/\'.$atts[\'file\'].\'.r\';
if (is_readable($file)) {
$file = file_get_contents($file);
return \'<pre>\'.$file.\'</pre>\';
} else {
return \'Can not read file: \'.$file;
}
}
add_shortcode(\'srcfile\',\'srcfile_shortcode\');
应该从中加载文件wp-content/uploads/rfiles
名称与file
shortcode属性[srcfile file="abc" /]
将加载wp-content/uploads/rfiles/abc.r
.您可以随时更新目录—FTP或Git。
使用内置工具:媒体库。要做到这一点,有两个步骤:
允许上载txt
文件,以启用上载
txt
文件上传非常简单:过滤器upload_mimes
并将您的类型添加到现有列表中。add_filter( \'upload_mimes\', \'extend_upload_mimes_for_txt\' );
function extend_upload_mimes_for_txt( $mime_types = array() )
{
$mime_types[\'txt\'] = \'text/plain\';
$mime_types[\'r\'] = \'text/plain\';
return $mime_types;
}
r
文件r
具有扩展名的文件.r
. 滤器media_send_to_editor
, 检查扩展,包括完整的内容并创建适当的标记。add_filter( \'media_send_to_editor\', \'embed_r_txt_files\', 10, 3 );
function embed_r_txt_files( $html, $id, $attachment )
{
if ( \'r\' !== pathinfo( $attachment[\'url\'], PATHINFO_EXTENSION ) )
return $html;
$content = file_get_contents( get_attached_file( $attachment[\'id\'] ) );
return \'<pre class="language-r"><code>\'
. esc_html( $content )
. \'</code></pre>\';
}
我想你已经调整了细节,但这应该是一个开始。我有一个类“wp\\u php\\u flickr”,它将在我正在编写的插件中使用wordpress核心类“wp\\u HTTP”if( !class_exists( \'WP_Http\' ) ) { require_once( WP_INSTALL_DIR.\'\\wp-includes\\class-http.php\'); } class wp_php_flickr { ... } 在测试过程中,我注意到我需要包含越来越多的核心类