我正在尝试修复自己没有写过的自定义WordPress主题。我有限的PHP知识无法解决这个问题。我的详尽搜索发现了类似的问题,大多数答案都说数组传递字符串或错误类型。我只是不知道如何修复它,或者我可能只是要压制警告?
警告:非法字符串偏移' the_link'在第39行上 警告:非法字符串偏移'子标题'在第58行
这是有问题的代码。任何帮助将不胜感激。
<?php get_header(); ?>
<?php wp_nav_menu( array( 'container_class' => 'header-bar','theme_location' => 'reviews' ) ); ?>
<div class="content wiemer-pages">
<?php the_post(); ?>
<div id="page-header-wrap">
<div id="page-header" class="no-shadow wreath">
<?php the_post_thumbnail(); ?>
<h1 class="page-title">
<?php the_title(); ?>
</h1>
<div id="page-header-content">
<?php $pageheader_metabox->the_meta();
$pageheader_metabox->the_value('title');?>
</div>
<div class="clear"></div>
</div>
</div>
<!-- [END] page-header-wrap + page header -->
<div class="page-content">
<?php the_content(); ?>
<?php edit_post_link(); ?>
</div>
<?php
$args=array(
'post_type'=>'reviews',
'posts_per_page'=>60
);
$catreview = new WP_Query($args);
global $post;
?>
<?php if($catreview->have_posts()): ?>
<h2 class="review-category" id="accolades">Recent Accolades </h2>
<?php while ($catreview->have_posts()) : $catreview->the_post();?>
<?php // load the meta
$mainurl='#';
$meta= get_post_meta($post->ID, '_urls', true);
$mainurl = $meta['the_link']; <!-- line 39 -->
?>
<div class="review-item">
<div class="review-thumb-container">
<?php // post thumbnail
if (has_post_thumbnail()){ ?>
<a class="review-thumbnail" href="<?php echo $mainurl ?>">
<?php the_post_thumbnail(array(144,180),array("title" => get_the_title($post->ID) . " - Thumbnail")); ?>
</a>
<?php } ?>
</div>
<div class="review-body">
<h6>
<?php the_time('F Y') ?>
<?php //echo get_the_term_list( $post->ID, 'accolades', '| '); ?>
</h6>
<h3><a href="<?php echo $mainurl; ?>">
<?php the_title() ?>
</a></h3>
<?php if ($sh = $meta['subheader']){ echo "<h4> $sh </h4>"; } ?> <!-- line 58 -->
<div class="review-content">
<?php the_content(); ?>
<?php edit_post_link( 'Edit', '<div class="edit-link">', '</div>' ); ?>
</div>
<?php if (isset($meta['link_title'])): ?>
<ul class="url-list">
<li> <a href="<?php echo $meta['the_link']; ?>" class="note-cat">
<?php echo $meta['link_title']; ?></a> </li>
</ul>
<?php endif; //urls ?>
</div>
</div>
<?php endwhile; ?>
<p><a class="to-top" title="Top of the page" href="#masthead">Top↑</a></p>
<?php endif; //End if for Accolades ?>
</div>
<?php get_footer(); ?>
答案 0 :(得分:1)
我认为您的问题是$meta
不是数组,因为get_post_meta
当前正在返回单个值,因为第三个参数设置为true。
Wordpress文档中第三个参数的说明:
$单一
(bool)(可选)是否返回单个值 默认值:false
您目前正在使用:
$meta = get_post_meta($post->ID, '_urls', true);
第三个参数设置为true。因此它将返回单个值(不是数组)。因此,您可以将其设置为false(或删除第三个参数,因为默认值为false)以返回数组。
您可以在此处找到有关get_post_meta
功能的更多信息:
https://developer.wordpress.org/reference/functions/get_post_meta/
有关'警告:非法字符串偏移'错误的信息:
https://stackoverflow.com/a/20271518/3093142