web-dev-qa-db-ja.com

を出力する方法 PHP コードによるファイル値

カスタム投稿タイプでACFプラグインによって作成された2つのカスタムフィールドの値を出力しようとしています。私は実際にこれをポップアップウィンドウに表示する必要があります。ワードプレスのポップアッププラグインはPHPコードをサポートしていません。コンテンツエディタから呼び出せるのはショートコードだけです。そこで、ポップアップのエディタでカスタムフィールドの値を表示するために使用するショートコードを作成しようとしています。テーマコードでこのコードを使ってショートコード[cite]を生成できることを私は知っています。

function cite_shortcode() {
}
add_shortcode( 'cite', 'cite_shortcode' );

しかし、私はそのコードにPHPコードを追加する方法を理解することができませんでした。私は次のようなことをやろうとしました:

function cite_shortcode() {
<div>
<?php
$object_terms = wp_get_object_terms( $post->ID, 'issue', array( 'fields' => 'all' ) );
if ( $object_terms ) {
    $res = '';
    foreach ( $object_terms as $term ) {
        if ( $term->parent ) { 
            $res .=  $term->name . ', '; 
        }
    }
    echo rtrim($res,' ,');  
}
?>), pp: <?php the_field('first_page'); ?>-<?php the_field('last_page'); ?>
</div>
}
add_shortcode( 'cite', 'cite_shortcode' );

しかし、うまくいきませんでした。それが示している:

解析エラー:構文エラー、予期しない

だから、私の質問は:

  1. どのように私はそのコードを機能させることができますか?
  2. それはcite.phpファイルにPHPコードを入れて、functions.phpで生成されたショートコードを通してその値を出力することは可能ですか?そしてそれをどのように行うのですか?

宜しくお願いします

1
nisr

連結変数を使用して過去にショートコードを作成しました。

上記のリンクを言い換えると、PHPをそのまま出力する必要があります。

 $output = '<p>';
 $output .= '<strong>' . $content . '</strong>';
 $output .= '</p>';
 return $output;

.=変数の連結を参照してください。

1
WPZA

万が一誰かが将来これを検索するのでは...

ショートコードを通してphp値を出力するための正しい方法はこれです:

add_shortcode('shortcode_name', 'shortcode_callback');
function shortcode_callback( $atts = array(), $content = null ) {

   $output = "Add your PHP here!!!";

   return $output;

}

日当たりの良いギリシャからのご挨拶!

0
BigDropGR
  1. どのように私はそのコードを機能させることができますか?
function cite_shortcode($atts) {
    $output = '<div>';

    $object_terms = wp_get_object_terms( $post->ID, 'issue', array( 'fields' => 'all' ) );

    if ( $object_terms ) {

        $res = '';

        foreach ( $object_terms as $term ) {

            if ( $term->parent ) { 
                $res .=  $term->name . ', '; 
            }

        }

        $output .=  rtrim($res,' ,');  
    }

    $output .= 'pp: '.get_the_field('first_page') . '-' . get_the_field('last_page');

    $output .= '</div>';

    return $output ;
}

add_shortcode( 'cite', 'cite_shortcode' );
  1. それはcite.phpファイルにPHPコードを入れて、functions.phpで生成されたショートコードを通してその値を出力することは可能ですか?そしてそれをどのように行うのですか?

この場合、phpファイルを短いコードに含めることができます。これは次のコードに似たものです。

function cite_shortcode($atts) {
    $output = '';

    ob_start();

    include "yourphpfile.php"; // Replace with exact location of php file 


    $output .= ob_get_clean();

    return $output ;
}

add_shortcode( 'cite', 'cite_shortcode' );

これが役に立つことを願っています。

0
Qaisar Feroz