Reputation: 24788
http://plugins.trac.wordpress.org/browser/seo-content-helper/tags/1.1/get-data.php
Don't repeat yourself
I know of the "Don't repeat yourself". Still it's getting messy in some places. The code below contains three blocks of code.
They are similar in some ways and different in others. It don't follow the same pattern in all ways.
What it do
It creates an array that I loop out on the frontend.
Question
Are there any better ways to do this kind of stuff? Less messy, better structure?
$message_start = '<strong>h2 tags</strong> - ';
$message_end = '<span class="counter">' . $this->count_h2 . '</span>';
if( $this->count_h2 == 0 ) {
$message = 'No tags found. Add some!';
$array['content_editor']['count_h2']['status'] = 2;
} elseif( $this->count_h2 == 1 ) {
$message = 'Some found. Too few!';
$array['content_editor']['count_h2']['status'] = 1;
} else {
$message = 'Many found. Great!';
$array['content_editor']['count_h2']['status'] = 0;
}
$array['content_editor']['count_h2']['message'] = $message_start . $message . $message_end;
$array['content_editor']['count_h2']['count'] = $this->count_h2;
$message_start = '<strong>h3-h6 tags</strong> - ';
$h2_h6 = $this->count_h3 + $this->count_h4 + $this->count_h5 + $this->count_h6;
$counter = ( $h2_h6 == 0 ) ? '' : $h2_h6;
$message_end = '<span class="counter">' . $counter . '</span>';
if( $h2_h6 == 0 ) {
$message = 'No found. Add some!';
$array['content_editor']['count_h3_h6']['status'] = 1;
} else {
$message = 'Found, great!';
$array['content_editor']['count_h3_h6']['status'] = 0;
}
$array['content_editor']['count_h3_h6']['message'] = $message_start . $message . $message_end;
$array['content_editor']['count_h3_h6']['count'] = $this->h2_h6;
$message_start = '<strong>Title keywords</strong> - ';
$counter = ( $this->found_keywords1_post_title == 0 ) ? '' : $this->found_keywords1_post_title;
$message_end = '<span class="counter">' . $counter . '</span>';
if( count( $this->keywords1 ) == 0 ) {
$message = 'No primary added.';
$array['content_editor']['missing_keywords1_post_title']['status'] = 2;
} elseif( $this->found_keywords1_post_title == 0 ) {
$message = 'No primary found.';
$array['content_editor']['missing_keywords1_post_title']['status'] = 2;
} else {
$s = ( $this->found_keywords1_post_title != 1 ) ? 's' : '';
$message = 'Primary found.';
$array['content_editor']['missing_keywords1_post_title']['status'] = 0;
}
$array['content_editor']['missing_keywords1_post_title']['message'] = $message_start . $message . $message_end;
$array['content_editor']['missing_keywords1_post_title']['count'] = $this->found_keywords1_post_title;
Upvotes: 1
Views: 231
Reputation: 24788
I ended up using a clean array and prepare the variables before. It makes it more readable.
$array = array(
'content_editor' => array(
'count_h2' => array(
'message_start' => 'h2 tags',
'messages' => array(
0 => 'Many found. Great!',
1 => 'Some found. Too few!',
2 => 'No tags found. Add some!'
),
'count' => $count_h2['count']
),
'count_h3' => array(
'message_start' => 'h3-h6 tags',
'messages' => array(
0 => 'Found, great!',
1 => 'No tags found. Add some!'
),
'count' => $count_h3['count']
),
'missing_keywords1_post_title' => array(
'status' => $missing_keywords1_post_title['status'],
'message_start' => 'Title keywords',
'messages' => array(
0 => 'Primary found!',
2 => 'No primary found!'
),
'count' => $missing_keywords1_post_title['count']
),
Upvotes: 0
Reputation: 557
Here is an example for cleaning you code :
function pstrong($txt) {
return "<strong>$txt</strong>";
}
function pcounter($txt) {
return '<span class="counter">' . $txt. '</span>';
}
$this->count_h1 = 1;
$this->h2_h6 = $this->count_h3 + $this->count_h4 + $this->count_h5 + $this->count_h6;
$array = array(
'count_h2' => array(
'title' => 'h2 tags',
0 => array(
'message' => 'No tags found. Add some!',
'status' => 2
),
1 => array(
'message' => 'Some found. Too few!',
'status' => 1
),
'else' => array(
'message' => 'Some found. Too few!',
'status' => 0
)
),
'h2_h6' => array(
'title' => 'h3-h6 tags',
0 => array(
'message' => 'No found. Add some!',
'status' => 1
),
'else' => array(
'message' => 'Found, great!',
'status' => 0
)
)
);
foreach($array as $key => $value) {
$message = (!empty($value['title'][$index]) ? $value['title'][$index]['message'] : $value['title']['else']['message']);
$array['content_editor'][$key][$index]['message'] = pstrong($value['title']) . $value['title'][$index]['message'] . pcounter($key);
$array['content_editor'][$key][$index]['count'] = $this->$key;
}
Upvotes: 2