私は自分で開発したものではないカスタムテーマを使用していますが、WordPressのショートコードでもプラグインのショートコードでも、すべてのショートコードに対応する機能は無効になっています。私は主にプラグインが生成したショートコードを介して動作するためにこの関数が必要です。何が原因なのかを確認するためにいくつかのことを確認しましたが、問題がどこにあるのかを見つけることができませんでした。これが私がチェックしたことです。
2012年のテーマに戻ったとき、ショートコードはうまく機能しました。
他のすべてのプラグインを無効にして、互換性がないかどうかを確認しました。変化なし。
私はこの投稿ごとにページテンプレートが正しいループを持っていることを確認しました: プラグインのショートコードはカスタムテーマでは動作しません - 修正方法がわからない
*編集:これはページテンプレートのコードです。
<?php get_header(); ?>
<div id="main">
<div class="layout">
<div id="content">
<aside id="block_menu_like_division">
<section>
<h1 id="title_like_division"></h1>
<nav id="nav_like_division">
</nav>
</section>
</aside>
<section>
<article>
<?php // while ( have_posts() ) : the_post();
if(get_the_content()){
?>
<?php if(get_the_ID() == 1228) { ?>
<h1>Forms</h1>
<?php the_content(); ?>
<?php }elseif(get_the_ID() == 1191){ ?>
<!-- <h5> </h5> -->
<?php the_content(); ?>
<?php }else{ ?>
<h1><?php the_title(); ?></h1>
<?php
function sup($text){
$true = preg_replace('#(\d+)(st|th|nd|rd)#', '$1<sup class="super">$2</sup>', $text);
return $true;
}
echo sup(get_the_content()); ?>
<?php } ?>
<?php }else{
$arg = query_posts(array('post_parent' => get_the_ID(), 'post_type' => 'page', 'posts_per_page'=>1, 'orderby' => 'menu_order', 'order' => 'ASC' ));
// $arg[0]->guid;
?>
<?php if($arg[0]->ID == 1811):?>
<?php
$ag = query_posts(array('post_parent' => $arg[0]->ID, 'post_type' => 'page','posts_per_page'=>1, 'orderby' => 'menu_order', 'order' => 'ASC' ));
?>
<h1><?php echo $ag[0]->post_title; ?></h1>
<?php echo $ag[0]->post_content; ?>
<?php else:?>
<h1><?php echo $arg[0]->post_title; ?></h1>
<?php echo $arg[0]->post_content; ?>
<?php endif;?>
<?php }?>
<?php // endwhile; // end of the loop. ?>
</article>
</section>
</div>
<aside>
<?php include('quick_links.php'); ?>
<?php
$url = $_SERVER['REQUEST_URI'];
$url_parse = parse_url($url);
$level = explode('/', $url_parse['path']);
if($level[1] == 'education' || $level[1] == 'fellowship'):?>
<?php
$catid = get_query_var('cat');
$s = query_posts( array(
'post_type' => 'post',
'post_status' => 'publish',
'category' => 'news',
'posts_per_page' => 0,
'orderby' => 'post_date',
'order' => 'DESC'));
while( have_posts() ) : the_post();
$newsList[] = array(
'title' => get_the_title(),
'link' => apply_filters('the_permalink', get_permalink()),
'date' => apply_filters('the_time', get_the_time( 'F j, Y' ), 'F j, Y'),
'expert' => apply_filters('the_excerpt', get_the_excerpt()),
'author' => get_the_author(),
);
endwhile;
wp_reset_query();
?>
<section>
<h2>News & Information</h2>
<div id="asideNews" class="itemsList">
<div class="listItem">
<article>
<header>
<h3><a href="<?php echo $newsList[0]['link']; ?>"><?php echo $newsList[0]['title']; ?></a></h3>
</header>
<p><?php echo $newsList[0]['expert']; ?></p>
<div class="readmore"><a href="<?php echo $newsList[0]['link']; ?>">Read More</a></div>
</article>
</div>
</div>
</section>
<?php else:?>
<?php
include('testimonials.php');
?>
<?php endif;?>
</aside>
</div>
</div>
<?php get_footer(); ?>
ショートコードが存在しない場合、元の開発者が古いバージョンのWordPress用に開発されたテーマを単に再利用した可能性があります。
次にどこを見ればいいですか?
それで私はついに解決策を見つけました!何週間もの間さまざまな解決策を探してみた後、それは私のpage.phpの "the_content"の参照から "get_"を削除することだけの問題でした。私はこれを変更しました
<?php
function sup($text){
$true = preg_replace('#(\d+)(st|th|nd|rd)#', '$1<sup class="super">$2</sup>', $text);
return $true;
}
echo sup(get_the_content()); ?>
これに
<?php
function sup($text){
$true = preg_replace('#(\d+)(st|th|nd|rd)#', '$1<sup class="super">$2</sup>', $text);
return $true;
}
echo sup(the_content()); ?>
これまでのところ私は何の問題もなく、すべてのショートコードは現在機能しています。それがなければ、どこで何を探すべきかわからなかったでしょう。
あなたのループは正しいです。これは 'the_content' を使用して(必要に応じて)the_content
フィルタを起動し、あなたのショートコードは他のテーマと同じように処理します。
私はあなたのテーマは フィルタの削除 または ショートコード であると結論づけなければなりません。テーマファイルでremove_filter( 'the_content',
のようなものを探してください。 add_filter('the_content',
もチェックしてください。それからremove_shortcode
を探して、それが何を取り除いているのかを見てください。
たぶんテーマはショートコードを壊すフィルタを追加することです、しかし私は最初の2つのうちの1つに賭けます。