我有以下代码使用表单输入注册metabox,用于输入live project链接
function portfolio_meta_box() {
add_meta_box (\'project-meta\', \'Add Project Link\', \'portfolio_meta_options\', \'portfolio\', \'side\', \'low\');
}
add_action("admin_init", "portfolio_meta_box");
function portfolio_meta_options(){
global $post;
if ( defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE ) return $post_id;
$custom = get_post_custom($post->ID);
$link = $custom [\'project-link\'][0];
?>
<input name="project-link" value="<?php echo $link; ?>" />
<?php
}
//save custom meta boxes when the post is saved
function save_project_link (){
global $post;
if(defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE ) {
return $post_id;
}
else {
update_post_meta ($post->ID, \'project-link\', $_POST[\'project-link\']);
}
}
add_action (\'save_post\', \'save_project_link\');
在我的单一投资组合中。php我正在使用此代码输出项目URL
<?php
get_header(); ?>
<main class="view">
<?php $link= get_post_custom_values(\'project-link\');
if($link[0] != "") ://!= not equal empty string
?>
<a href="<?=$link[0]?>" target="_blank">view site</a>
<?php else: ?>
<em>live link unavailable</em>
<?php endif; ?>
<?php while ( have_posts() ) :the_post(); the_content(); endwhile;?>
</main><!-- .site-main -->
<?php get_footer(); ?>
这给了我以下输出(请参见屏幕截图上的左列),但我想知道如何更改代码以获得右列所示的输出(这是一个可单击的链接,应该只显示在第一个项目屏幕截图下)
我的第二个问题是我注意到
$link = $custom [\'project-link\'][0];
和
\'<?php $link= get_post_custom_values(\'project-link\');
if($link[0] != "") ://!= not equal empty string
?>
<a href="<?=$link[0]?>" target="_blank">view site</a>\'
我们使用
[\'project-link\'][0]; 和
$link[0]. 是第一个[\'project-link”“][0];索引为零的索引数组,使其拾取数组中的第一个值?至于第二个$链接[0],在这种情况下为什么我们需要零索引?
最合适的回答,由SO网友:rank 整理而成
您可以始终使用Wordpress代码参考来了解发生了什么:
get_post_custom() 是一个检索post元字段并需要post id作为参数的函数。它返回array 使用给定帖子的帖子元:https://developer.wordpress.org/reference/functions/get_post_custom/
get_post_custom_values() 是一个函数,用于检索自定义post字段的值,并接受键和post id作为参数。它返回array 元字段值的。https://developer.wordpress.org/reference/functions/get_post_custom_values/
因此,您需要索引来访问数组中的第一个位置。如果要查看数组的索引,可以按如下方式输出它们:
$key_values = get_post_custom_values( \'project-link\' );
echo $key_values[0];
这将显示索引位置0上的数组包含的内容。如果你想看看这些指数位置里面有什么,可以用1或2试试。
另一个问题是,如何获得所需的输出。首先,您希望显示url,因此必须将其放在a标记之间:
<a href="<?php echo $link[0]; ?>" target="_blank"><?php echo $link[0]; ?></a>
如果你想把它放在你的内容下面,你需要把你的
the_content() 在a标记上方调用。此外,我想您应该在post循环中使用它,并使用函数get\\u post\\u custom\\u values和post id:
<main class="view">
<?php
while ( have_posts() ) :the_post();
the_content();
$current_post = get_the_ID();
$link= get_post_custom_values(\'project-link\', $current_post);
if($link[0] != "") { ?>
<a href="<?php echo $link[0]; ?>" target="_blank"><?php echo $link[0]; ?></a>
<?php } else { ?>
<em>live link unavailable</em>
<?php }
endwhile;
?>
</main><!-- .site-main -->
希望这有助于我正确理解你的问题。