WordPressでサイトを作成しています。コンテンツとしては、PDFファイルをiframe内に埋め込むことができます。そこで私は最初にmedia_send_to_editor
をフックするWordPress関数を作成しましたが、この関数の問題はiframeがWPのビジュアルエディタ内に多くのスペースを予約するので、そのページへの他の編集は使い勝手には良くないということです。
それで、私はPDFファイルをiframeの中に埋め込むためのショートコードを探すべきだと考えました。
PDFファイルのsrcを取得してそれをsrc属性内に貼り付けるWordPressショートコードを作成しようとしているので、PDFはiframe内に表示されます。下のコードの断片だけが私にWordPressの白い画面を表示させますが、それはもう機能しません。
いくつかのアドバイスを探してください。ありがとうございました。
function embed_pdf_files( $atts, $content = null ) {
extract(shortcode_atts(array(
$src = wp_get_attachment_url();
), $atts));
return '<iframe width="100%" height="1000" src="' . $content . '"></iframe>';
}
add_shortcode( 'embed_pdf' , 'embed_pdf_files' );
それはあなたがどのようにpdfsを加えたいかによりますが、これはおそらくすべてをカバーするべきです:
function embed_pdf_files( $atts, $content = null ){
//add default attributes here.
$defaults = array(
//'width' => '100%',
//'height' => '1000'
);
//This overwrites defaults with the attributes in shortcode
$a = shortcode_atts( $defaults, $atts );
$src = $a['src'];
//If no src present, get src by attachment id
if( ! $src && $a['attachment_id'] ){
$src = get_attachment_link( $a['attachment_id'] );
}
//If no src or content (srcdoc), return nothing.
if( ! $src && ! $content ){
return '';
}
//Comment out/in the attributes you want to allow the editor control over
$html_attrs = '';
//src
$html_attrs .= $src ? ' src="' . esc_attr( $a['src'] ) . '"' : '';
//srcdoc
$html_attrs .= ( ! $src && $content ) ? ' srcdoc="' . esc_attr( $content ) . '"' : '';
//width
$html_attrs .= $a['width'] ? ' width="' . esc_attr( $a['width'] ) . '"' : '';
//height
$html_attrs .= $a['height'] ? ' height="' . esc_attr( $a['height'] ) . '"' : '';
//seamless
$html_attrs .= array_key_exists( 'seamless', $a ) ? ' seamless' : '';
//name
//$html_attrs .= $a['name'] ? ' name="' . esc_attr( $a['name'] ) . '"' : '';
//sandbox
//$html_attrs .= $a['sandbox'] ? ' sandbox="' . esc_attr( $a['sandbox'] ) . '"' : '';
//These are the global html tag attributes - remove any you don't want editable
$global_attrs = array( 'accesskey', 'class', 'contenteditable', 'contextmenu', 'dir', 'draggable', 'hidden', 'id', 'lang', 'spellcheck', 'style', 'tabindex', 'title' );
for( $i = 0; $i < count( $global_attrs ); $i++ ){
$html_attrs .= array_key_exists( $global_attrs[$i], $a ) ? ' ' . $global_attrs[$i] . '="' . esc_attr( $a[ $global_attrs[$i] ] ) . '"' : '';
}
return '<iframe' . $html_attrs . '></iframe>';
}
add_shortcode( 'embed_pdf', 'embed_pdf_files' );
これはあなたのfunctions.phpかあなた自身のプラグインかどこかに似た場所にあるべきです。
私は潜在的に危険となり得る属性についてコメントしましたが、あなたがそれらを必要とするならば、それらはそこにあります。
エディタはこのようなものを使うことができます。
...
[iframeクラス= "my-iframe" src = "http://example.com/mypdf.pdf"] [/ iframe]
...
または
...
[iframe id = "my-iframe" attachment_id = "193"] [/ iframe]
...
または
...
[iframe class = "my-iframe"] <p> iframe内の私の段落</p> [/ iframe]
...