私は自分のウェブサイト上で Miscellaneous shortcodes を正しく動かそうとしています。特に、私は[list-pages]、[child-pages]、[sibling-pages]というページのショートコードを使用したいと思います。私は、テンプレートへの最小限の変更(背景とフォントの変更)で15歳の子供を使っています。
これが現在の動作です。私のすべてのプラグインでjetpackとakismetが無効になっているので、[youtube]や[archives]などのショートコードは正しく表示されます。 functions.php
ファイルにショートコードを作成することもできます。
function test_shortcode() {return 'Working';}
add_shortcode('test_shortcode', 'test_shortcode');
それは同様にうまくいきます。ただし、いずれかのページのショートコードを使用すると、括弧で囲まれたショートコードだけが返されます。私のウェブサイトは現在いくつかのテストページ(2人の親、1人の子供)を含んでいます。
私は自分のプラグイン(Akismet用に保存)がこのショートコードの振る舞いを変えないことを(無効にすることによって)確認しました。また、動作が場所(ページ/投稿/サイドバー)、投稿形式(標準/横)、テンプレート(15/14/14)の影響を受けないことも確認しました。この時点ではデバッグのアイデアが足りなくなりました。
証明に追加されたメモ:上記でリンクしたサポートページでは他のプラグについては特に触れていないので、これらのショートコードは現在のWordpressプラットフォームに統合されていると思いますそして このプラグイン はもう必要ありません。私はこの仮定に誤りがありますか?
@Miloが言ったように、wordpress.comはそれ自体がプラットフォームであり、wordpress.comで利用可能なものはすべてwordpress.comでホストされているサイトでのみ利用可能です。 jetpackプラグインは、しかしながら、いくつかの機能を自己ホスト型のサイトで利用可能にしますが、私は特にどれが確実であるかわかりません。
あなたが話しているショートコードはwordpress.comでホストされているサイトでのみ利用可能で、セルフホストサイトでは利用できません。
私はすぐにWordPressで 私が最近フィルタやアクションを探すために行ったスクリプト を書き直して、すべてのショートコードをセルフホストサイトで利用できるようにしました。これが関数です
function get_all_filters_and_actions2( $path = '' )
{
//Check if we have a path, if not, return false
if ( !$path )
return false;
// Validate and sanitize path
$path = filter_var( $path, FILTER_SANITIZE_URL );
/**
* If valiadtion fails, return false
*
* You can add an error message of something here to tell
* the user that the URL validation failed
*/
if ( !$path )
return false;
// Get each php file from the directory or URL
$dir = new RecursiveDirectoryIterator( $path );
$flat = new RecursiveIteratorIterator( $dir );
$files = new RegexIterator( $flat, '/\.php$/i' );
if ( $files ) {
$output = '';
$array = [];
foreach($files as $name=>$file) {
/**
* Match and return all instances of apply_filters(**) or do_action(**)
* The regex will match the following
* - Any depth of nesting of parentheses, so apply_filters( 'filter_name', parameter( 1,2 ) ) will be matched
* - Whitespaces that might exist between apply_filters or do_action and the first parentheses
*/
// Use file_get_contents to get contents of the php file
$get_file_contents = file( $file );
foreach ( $get_file_contents as $key=>$get_file_content ) {
preg_match_all( '/add_shortcode\s*(\([^()]*(?:(?-1)[^()]*)*+\))/', $get_file_content, $matches );
if ( $matches[0] )
$array[$name][$key+1] = $matches[0];
}
}
if ( $array ) {
foreach ( $array as $file_name=>$values ) {
$output .= '<ul>';
$output .= '<strong>File Path: ' . $file_name .'</strong></br>';
$output .= 'The following shortcodes are available';
foreach ( $values as $line_number=>$string ) {
$whitespaces = ' ';
$output .= '<li>Line reference ' . $line_number . $whitespaces . $string[0] . '</li>';
}
$output .= '</ul>';
}
}
return $output;
}
return false;
}
フロントエンドで利用可能なすべてのショートコードはwp-includes
ファイルに入っているはずなので、次のように関数を実行することができます。(NOTE私はこれをlocalhostでテストしました。
echo get_all_filters_and_actions2( 'E:\xampp\htdocs\wordpress/wp-includes/' );
どの出力
File Path: E:\xampp\htdocs\wordpress/wp-includes\class-wp-embed.php
The following shortcodes are available
Line reference 31 add_shortcode( 'embed', '__return_false' )
Line reference 60 add_shortcode( 'embed', array( $this, 'shortcode' ) )
File Path: E:\xampp\htdocs\wordpress/wp-includes\media.php
The following shortcodes are available
Line reference 1379 add_shortcode('wp_caption', 'img_caption_shortcode')
Line reference 1380 add_shortcode('caption', 'img_caption_shortcode')
Line reference 1490 add_shortcode('gallery', 'gallery_shortcode')
Line reference 2021 add_shortcode( 'playlist', 'wp_playlist_shortcode' )
Line reference 2270 add_shortcode( 'audio', 'wp_audio_shortcode' )
Line reference 2525 add_shortcode( 'video', 'wp_video_shortcode' )
File Path: E:\xampp\htdocs\wordpress/wp-includes\shortcodes.php
The following shortcodes are available
Line reference 59 add_shortcode( 'footag', 'footag_func' )
Line reference 72 add_shortcode( 'bartag', 'bartag_func' )
Line reference 80 add_shortcode( 'baztag', 'baztag_func' )
Line reference 89 add_shortcode($tag, $func)
wp-includes\shortcodes.php
の関数によって取得されたショートコードはコメント内のサンプルにすぎないため、セルフホストサイトでは以下のショートコードのみがデフォルトで利用可能です。
[caption]
[gallery]
[playlist]
[audio]
[video]
[embed]
(注:これはWordPress 4.4と同じです。