在 wordpress php 代码中显示 gif

displaying a gif in php code in wordpress

我最近接手了一个客户的项目,该项目是用 wordpress 和 java 脚本构建的网站。之前的开发者没有评论他们的代码,所以我花了一些时间来破译它。

该站点使用 woocommerce 作为在线商店。客户要求当用户付款时,随后的感谢屏幕会显示一个动画 gif 表示感谢。

在标准的 woocommerce 结帐页面上插入 gif 很好并且有效。然而,客户希望它在购买后显示在用代码创建的感谢页面上。代码显示如下:

<?php if ( $order->has_status( 'failed' ) ) : ?>

    <p><?php esc_html_e( 'Unfortunately your order cannot be processed as the originating bank/merchant has declined your transaction.', "wp-experts" ); ?></p>

    <p><?php
        if ( is_user_logged_in() )
            esc_html_e( 'Please attempt your purchase again or go to your account page.', "wp-experts" );
        else
            esc_html_e( 'Please attempt your purchase again.', "wp-experts" );
    ?></p>

    <p>
        <a href="<?php echo esc_url( $order->get_checkout_payment_url() ); ?>" class="button pay"><?php esc_html_e( 'Pay', "wp-experts" ) ?></a>
        <?php if ( is_user_logged_in() ) : ?>
        <a href="<?php echo esc_url( wc_get_page_permalink( 'myaccount' ) ); ?>" class="button pay"><?php esc_html_e( 'My Account', "wp-experts" ); ?></a>
        <?php endif; ?>
    </p>

<?php else : ?>

    <p><?php echo apply_filters( 'woocommerce_thankyou_order_received_text', esc_html__( 'Thank you. Your order has been received.', "wp-experts" ), $order ); ?></p>
    <ul class="order_details pull-left">
        <li class="order">
            <?php esc_html_e( 'Order Number:', "wp-experts" ); ?>
            <strong><?php echo ''.$order->get_order_number(); ?></strong>
        </li>
        <li class="date">
            <?php esc_html_e( 'Date:', "wp-experts" ); ?>
            <strong><?php echo date_i18n( get_option( 'date_format' ), strtotime( $order->order_date ) ); ?></strong>
        </li>
        <li class="total">
            <?php esc_html_e( 'Total:', "wp-experts" ); ?>
            <strong><?php echo ''.$order->get_formatted_order_total(); ?></strong>
        </li>
        <?php if ( $order->payment_method_title ) : ?>
        <li class="method">
            <?php esc_html_e( 'Payment Method:', "wp-experts" ); ?>
            <strong><?php echo ''.$order->payment_method_title; ?></strong>
        </li>
        <?php endif; ?>



    </ul>
    <a href="<?php echo  get_permalink( get_option('woocommerce_myaccount_page_id') ); ?>" class="btn btn-success pull-right">CLICK HERE TO GET STARTED!</a>
    <div class="clear"></div>

<?php endif; ?>

<?php do_action( 'woocommerce_thankyou_' . $order->payment_method, $order->id ); ?>
<?php do_action( 'woocommerce_thankyou', $order->id ); ?>
<p><?php echo apply_filters( 'woocommerce_thankyou_order_received_text', esc_html__( 'Thank you. Your order has been received.', "wp-experts" ), null ); ?></p>

我在 google 上搜索了如何在 php 中显示 gif。

gif 已上传到我的服务器上,在主题的图像子目录中

我使用了来自 Whosebug 的想法,例如

$file = 'Camel-continuous-1.gif'

header('Content-type: image/gif');
readfile($file);

但这只会让网页崩溃。我把它放在上面代码中付款方式行的后面。

有什么想法吗?提前致谢

我无法根据代码片段判断插入位置,但如果您

<?php
//supposing the gif is in the same folder
$file = 'Camel-continuous-1.gif'; 

echo "<img src=\"".$file."\">";
?>

简而言之,你可以这样说:

<?php='<img src="/gifs/Camel-continuous-1.gif" >'?>

或者更简单,如果你想使用 short open tag

<?='<img src="/gifs/Camel-continuous-1.gif" >'?>

玩得开心

和@flomei 一样,我不确定我是否理解你想要什么,但如果你只想在 "Thank You" 文本附近的某处放置 gif,你可以在 php 中回显它。这会将其置于文本 "Thank you. Your order has been received":

之上
<?php if ( $order->has_status( 'failed' ) : ?>
    <?php // deleted your existing code. ?>
<?php else : ?>
    <?php echo '<img src="Camel-continuous-1.gif"> ?>
    <?php // more deleted code. ?>
<?php endif; ?>

这对您不起作用,因为您混淆了引号。如果您使用双引号来分隔字符串,则必须将其反斜杠或在其中使用单引号。 以类似的方式,如果用单引号分隔字符串,则必须使用双引号。

<?php
// this outputs a error
$file = '/uploads/2018/07/Camel-continuous-2.gif'; 
echo "<img width="251" height="243" src=\"".$file."\">"; 

?>

这适用于任何 php 版本。这是在引号内使用反斜杠引号的干净方法

<?php

$file = "/uploads/2018/07/Camel-continuous-2.gif"; 
echo "<img width=\"251\" height=\"243\" src=\"".$file."\">"; 

?> 

这也适用于某些 php 版本。 (在单引号内使用双引号

<?php

$file = '/uploads/2018/07/Camel-continuous-2.gif'; 
echo '<img width="251" height="243" src="'.$file.'">'; 

?> 

这也适用于您,具体取决于您的 php 版本。在双引号内使用单引号

<?php

$file = "/uploads/2018/07/Camel-continuous-2.gif"; 
echo "<img width='251' height='243' src='".$file."'>"; 

?>