您的快捷码设计为直接在页面上打印结果,因此在打印前无法先检查输出是否为空。但是,短代码运行一个特定的函数,您可以通过几种方式直接使用该函数。
方法1:可以向模板代码中添加一些额外的PHP逻辑方法2:您可以使用所需的其他HTML创建自定义短代码[acf field=“something”]使用的函数称为\\u field()。就像我上面提到的那样,\\u field()直接打印到页面,这对您的目的不起作用。相反,您可以使用get\\u field()并在选择时打印它。
使用get\\u field()与使用短代码非常相似。它接受两个参数;1、字段名称,2。帖子ID。
get_field(\'FieldName\',\'ID\')
方法1一些简单的PHP逻辑在打印到页面之前检查值是否为空,如下所示。
<?php
$testimony_text = get_field(\'testimony\', $post->ID );
$testimony_name = get_field(\'name\', $post->ID );
if ( $testimony_text != \'\' && $testimony_name != \'\' ) {
echo "<h4>{$testimony_text} <strong>{$testimony_name}</strong></h4>";
}
?>
方法2围绕输出包装HTML的自定义短代码可能如下所示。将此放置在主题的功能中。php文件。
function acfcustom_func($atts) {
extract( shortcode_atts( array(
\'text\' => \'\',
\'name\' => \'\',
), $atts ) );
$id = get_the_id();
$testimony_text = get_field($text, $id );
$testimony_name = get_field($name, $id );
if ( $testimony_text == \'\' || $testimony_name == \'\' ) return;
$output = "<h4>{$testimony_text} <strong>{$testimony_name}</strong></h4>";
return $output;
}
add_shortcode( \'acfcustom\', \'acfcustom_func\' );
要使用快捷码,请将其粘贴到您的帖子正文或边栏小部件中,如下所示。
[acfcustom text="testimonial" name="name"]
注意:短代码通常不会在侧栏小部件中工作,但这可以更改。有一些插件可以在侧栏小部件中运行短代码。
方法2的工作原理说明
这可能会很长很快。这里是一个快速概述。好的,我们首先构建一个简单的短代码函数。Wordpress Codex有一些例子here. 我们将$atts数组传递到函数中,该数组包含我们将在短代码中指定的参数(证明和名称)。然后,我们从$atts数组中提取参数并为其指定变量名。现在,我们可以使用get\\u field()函数中的参数。该功能特定于Advanced Custom Fields 您正在使用的插件。get\\u field()的结果被设置为新变量($defessional\\u text和$defessional\\u name)。现在,我们使用一些IF逻辑来检查变量是否为空。如果是,则结束函数,不返回任何内容。如果两个变量都有内容,我们将它们连接到HTML字符串中,然后返回要在页面上打印的字符串。