I'm looking for way to get a specific Gutenbergblock from my post content to use in the archive template. Somewhere in my single post there's an iconlist (nested in a column and the column nested in a row) that I would like to use as a summary of the page in the entry on the archive page.
I wrote this code to search for the block called 'kadence/iconlist' and render it.
<?php $post_id = get_the_ID();
$post = get_post($post_id);
$blocks = parse_blocks($post->post_content);
foreach ($blocks as $block) {
if ($block['blockName'] == 'kadence/iconlist') {
echo render_block($block);
}
} ?>
This renders nothing because the 'kadence/iconlist' is nested. A var_dump of the $block shows this structure:
Array
(
[blockName] => kadence/rowlayout
[attrs] => Array
(
[uniqueID] => _94b9e4-63
[columnGutter] => wider
[colLayout] => equal
[maxWidth] => 1220
[topPadding] => 55
[bottomPadding] => 55
[overlayFirstOpacity] => 1
[overlaySecondOpacity] => 1
[overlayOpacity] => 90
[align] => full
[firstColumnWidth] => 50
[secondColumnWidth] => 50
)
[innerBlocks] => Array
(
[0] => Array
(
[blockName] => kadence/column
[attrs] => Array
(
[topPadding] => 25
[bottomPadding] => 25
[leftPadding] => 25
[rightPadding] => 25
[uniqueID] => _91ffee-25
)
[innerBlocks] => Array
(
[0] => Array
(
[blockName] => kadence/advancedgallery
[attrs] => Array
(
[uniqueID] => _ccc1ba-38
[columns] => Array
(
[0] => 2
[1] => 2
[2] => 2
[3] => 2
[4] => 1
[5] => 1
)
[thumbSize] => full
[ids] => Array
(
[0] => 355
[1] => 354
[2] => 357
[3] => 353
[4] => 351
[5] => 352
[6] => 349
[7] => 348
[8] => 350
)
[type] => thumbslider
[imageRatio] => square
[linkTo] => media
[gutter] => Array
(
[0] => 40
[1] =>
[2] =>
)
[imageRadius] => Array
(
[0] => 0
[1] => 0
[2] => 0
[3] => 0
)
[autoPlay] => 1
[autoSpeed] => 4000
[lightbox] => magnific
[margin] => Array
(
[0] => Array
(
[desk] => Array
(
[0] => 0
[1] => 0
[2] => 0
[3] => 0
)
[tablet] => Array
(
[0] =>
[1] =>
[2] =>
[3] =>
)
[mobile] => Array
(
[0] =>
[1] =>
[2] =>
[3] =>
)
)
)
[thumbnailRatio] => square
[thumbnailColumns] => Array
(
[0] => 4
[1] => 4
[2] => 4
[3] => 4
[4] => 4
[5] => 4
)
)
[innerBlocks] => Array
(
)
[innerHTML] =>
Previous
Next
Previous
Next
[innerContent] => Array
(
[0] =>
Previous
Next
)
)
)
[innerHTML] =>
[innerContent] => Array
(
[0] =>
[1] =>
[2] =>
)
)
[1] => Array
(
[blockName] => kadence/column
[attrs] => Array
(
[id] => 2
[uniqueID] => _b56b72-c0
)
[innerBlocks] => Array
(
[0] => Array
(
[blockName] => kadence/advancedheading
[attrs] => Array
(
[level] => 1
[uniqueID] => _1f94db-5b
)
[innerBlocks] => Array
(
)
[innerHTML] =>
RVS-200HD+
[innerContent] => Array
(
[0] =>
RVS-200HD+
)
)
[1] => Array
(
[blockName] => kadence/iconlist
[attrs] => Array
(
[items] => Array
(
[0] => Array
(
[icon] => fe_check
[link] =>
[target] => _self
[size] => 20
[text] => Voordeel nummer 1 iets met emmers
[width] => 2
[color] =>
[background] =>
[border] =>
[borderRadius] => 0
[borderWidth] => 1
[padding] => 5
[style] => default
)
[1] => Array
(
[icon] => fe_check
[link] =>
[target] => _self
[size] => 20
[text] => Puntje 2
[width] => 2
[color] =>
[background] =>
[border] =>
[borderRadius] => 0
[borderWidth] => 1
[padding] => 5
[style] => default
)
[2] => Array
(
[icon] => fe_check
[link] =>
[target] => _self
[size] => 20
[text] => Puntje 3, deze zijn per bericht gewoon aan te passen
[width] => 2
[color] =>
[background] =>
[border] =>
[borderRadius] => 0
[borderWidth] => 1
[padding] => 5
[style] => default
)
[3] => Array
(
[icon] => fe_check
[link] =>
[target] => _self
[size] => 20
[width] => 2
[color] =>
[background] =>
[border] =>
[borderRadius] => 0
[borderWidth] => 1
[padding] => 5
[style] => default
[text] => En toe te voegen
)
)
[listCount] => 4
[uniqueID] => _342687-70
)
[innerBlocks] => Array
(
)
[innerHTML] =>
Voordeel nummer 1 iets met emmers
Puntje 2
Puntje 3, deze zijn per bericht gewoon aan te passen
En toe te voegen
[innerContent] => Array
(
[0] =>
Voordeel nummer 1 iets met emmers
Puntje 2
Puntje 3, deze zijn per bericht gewoon aan te passen
En toe te voegen
)
)
[2] => Array
(
[blockName] => core/block
[attrs] => Array
(
[ref] => 918
)
[innerBlocks] => Array
(
)
[innerHTML] =>
[innerContent] => Array
(
)
)
)
[innerHTML] =>
[innerContent] => Array
(
[0] =>
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
[6] =>
)
)
)
[innerHTML] =>
[innerContent] => Array
(
[0] =>
[1] =>
[2] =>
[3] =>
[4] =>
)
)
Array
(
[blockName] =>
[attrs] => Array
(
)
[innerBlocks] => Array
(
)
[innerHTML] =>
[innerContent] => Array
(
[0] =>
)
)
How do I have to change the if($block['blockName'] == 'kadence/iconlist' to actually get to the kadence/iconlist block?
I've been using wordpress theme Enfold which includes shortcode to show product slider of Woocommerce products. The filter to edit query is also included:
$query = apply_filters('avia_product_slide_query', $query, $params);
The default query variable looks something like this:
Array(
[post_type] => product
[post_status] => publish
[ignore_sticky_posts] => 1
[paged] => 1
[offset] => 0
[post__not_in] => Array ( )
[posts_per_page] => 9
[orderby] => menu_order title
[order] => ASC
[meta_query] => Array (
[0] => Array (
[key] => _visibility
[value] => Array (
[0] => visible
[1] => catalog
)
[compare] => IN
)
)
[tax_query] => Array (
[0] => Array (
[taxonomy] => product_cat
[field] => id
[terms] => Array (
[0] => 13
[1] => 64
[2] => 65
[3] => 15
[4] => 67
[5] => 66
[6] => 23
[7] => 73
[8] => 75
[9] => 10
[10] => 52
[11] => 53
[12] => 50
[13] => 51
[14] => 12
[15] => 48
[16] => 11
[17] => 44
[18] => 14
[19] => 55
)
[operator] => IN
)
)
)
Does anybody know a way to add some filter to this query to show only products which have defined sale price?
Finally I solve it this way:
$query['post__in'] = array_merge( array( 0 ), wc_get_product_ids_on_sale() );
i am using php excel to generate chart, but its not taking cell value. for reference you can refer http://uvresins.net/images/xls.png
My chart variable return :
PHPExcel_Chart Object
(
[_name:PHPExcel_Chart:private] => chart1
[_worksheet:PHPExcel_Chart:private] =>
[_title:PHPExcel_Chart:private] => PHPExcel_Chart_Title Object
(
[_caption:PHPExcel_Chart_Title:private] => Scgcc
[_layout:PHPExcel_Chart_Title:private] =>
)
[_legend:PHPExcel_Chart:private] => PHPExcel_Chart_Legend Object
(
[_position:PHPExcel_Chart_Legend:private] => tr
[_overlay:PHPExcel_Chart_Legend:private] =>
[_layout:PHPExcel_Chart_Legend:private] =>
)
[_xAxisLabel:PHPExcel_Chart:private] =>
[_yAxisLabel:PHPExcel_Chart:private] => PHPExcel_Chart_Title Object
(
[_caption:PHPExcel_Chart_Title:private] => Value ($k)
[_layout:PHPExcel_Chart_Title:private] =>
)
[_plotArea:PHPExcel_Chart:private] => PHPExcel_Chart_PlotArea Object
(
[_layout:PHPExcel_Chart_PlotArea:private] =>
[_plotSeries:PHPExcel_Chart_PlotArea:private] => Array
(
[0] => PHPExcel_Chart_DataSeries Object
(
[_plotType:PHPExcel_Chart_DataSeries:private] => lineChart
[_plotGrouping:PHPExcel_Chart_DataSeries:private] => stacked
[_plotDirection:PHPExcel_Chart_DataSeries:private] =>
[_plotStyle:PHPExcel_Chart_DataSeries:private] =>
[_plotOrder:PHPExcel_Chart_DataSeries:private] => Array
(
[0] => 0
[1] => 1
[2] => 2
)
[_plotLabel:PHPExcel_Chart_DataSeries:private] => Array
(
[0] => PHPExcel_Chart_DataSeriesValues Object
(
[_dataType:PHPExcel_Chart_DataSeriesValues:private] => String
[_dataSource:PHPExcel_Chart_DataSeriesValues:private] => Worksheet!$B$1
[_formatCode:PHPExcel_Chart_DataSeriesValues:private] =>
[_marker:PHPExcel_Chart_DataSeriesValues:private] =>
[_pointCount:PHPExcel_Chart_DataSeriesValues:private] => 1
[_dataValues:PHPExcel_Chart_DataSeriesValues:private] => Array
(
)
)
[1] => PHPExcel_Chart_DataSeriesValues Object
(
[_dataType:PHPExcel_Chart_DataSeriesValues:private] => String
[_dataSource:PHPExcel_Chart_DataSeriesValues:private] => Worksheet!$C$1
[_formatCode:PHPExcel_Chart_DataSeriesValues:private] =>
[_marker:PHPExcel_Chart_DataSeriesValues:private] =>
[_pointCount:PHPExcel_Chart_DataSeriesValues:private] => 1
[_dataValues:PHPExcel_Chart_DataSeriesValues:private] => Array
(
)
)
[2] => PHPExcel_Chart_DataSeriesValues Object
(
[_dataType:PHPExcel_Chart_DataSeriesValues:private] => String
[_dataSource:PHPExcel_Chart_DataSeriesValues:private] => Worksheet!$D$1
[_formatCode:PHPExcel_Chart_DataSeriesValues:private] =>
[_marker:PHPExcel_Chart_DataSeriesValues:private] =>
[_pointCount:PHPExcel_Chart_DataSeriesValues:private] => 1
[_dataValues:PHPExcel_Chart_DataSeriesValues:private] => Array
(
)
)
)
[_plotCategory:PHPExcel_Chart_DataSeries:private] => Array
(
[0] => PHPExcel_Chart_DataSeriesValues Object
(
[_dataType:PHPExcel_Chart_DataSeriesValues:private] => String
[_dataSource:PHPExcel_Chart_DataSeriesValues:private] => Worksheet!$A$2:$A$6
[_formatCode:PHPExcel_Chart_DataSeriesValues:private] =>
[_marker:PHPExcel_Chart_DataSeriesValues:private] =>
[_pointCount:PHPExcel_Chart_DataSeriesValues:private] => 5
[_dataValues:PHPExcel_Chart_DataSeriesValues:private] => Array
(
)
)
)
[_smoothLine:PHPExcel_Chart_DataSeries:private] =>
[_plotValues:PHPExcel_Chart_DataSeries:private] => Array
(
[0] => PHPExcel_Chart_DataSeriesValues Object
(
[_dataType:PHPExcel_Chart_DataSeriesValues:private] => Number
[_dataSource:PHPExcel_Chart_DataSeriesValues:private] => Worksheet!$B$2:$B$6
[_formatCode:PHPExcel_Chart_DataSeriesValues:private] =>
[_marker:PHPExcel_Chart_DataSeriesValues:private] =>
[_pointCount:PHPExcel_Chart_DataSeriesValues:private] => 5
[_dataValues:PHPExcel_Chart_DataSeriesValues:private] => Array
(
)
)
[1] => PHPExcel_Chart_DataSeriesValues Object
(
[_dataType:PHPExcel_Chart_DataSeriesValues:private] => Number
[_dataSource:PHPExcel_Chart_DataSeriesValues:private] => Worksheet!$C$2:$C$6
[_formatCode:PHPExcel_Chart_DataSeriesValues:private] =>
[_marker:PHPExcel_Chart_DataSeriesValues:private] =>
[_pointCount:PHPExcel_Chart_DataSeriesValues:private] => 5
[_dataValues:PHPExcel_Chart_DataSeriesValues:private] => Array
(
)
)
[2] => PHPExcel_Chart_DataSeriesValues Object
(
[_dataType:PHPExcel_Chart_DataSeriesValues:private] => Number
[_dataSource:PHPExcel_Chart_DataSeriesValues:private] => Worksheet!$D$2:$D$6
[_formatCode:PHPExcel_Chart_DataSeriesValues:private] =>
[_marker:PHPExcel_Chart_DataSeriesValues:private] =>
[_pointCount:PHPExcel_Chart_DataSeriesValues:private] => 5
[_dataValues:PHPExcel_Chart_DataSeriesValues:private] => Array
(
)
)
)
)
)
)
[_plotVisibleOnly:PHPExcel_Chart:private] => 1
[_displayBlanksAs:PHPExcel_Chart:private] => 0
[_topLeftCellRef:PHPExcel_Chart:private] => A13
[_topLeftXOffset:PHPExcel_Chart:private] => 0
[_topLeftYOffset:PHPExcel_Chart:private] => 0
[_bottomRightCellRef:PHPExcel_Chart:private] => H30
[_bottomRightXOffset:PHPExcel_Chart:private] => 10
[_bottomRightYOffset:PHPExcel_Chart:private] => 10
)
AND FromArray has value :
Array
(
[0] => Array
(
[0] =>
[1] => 12/2011
[2] => 01/2012
[3] => 02/2012
)
[1] => Array
(
[0] => QATAR
[1] => 102.77
[2] => 100
[3] => 102.13
)
[2] => Array
(
[0] => SAUDI ARABIA
[1] => 102.74
[2] => 100
[3] => 98.22
)
[3] => Array
(
[0] => KUWAIT
[1] => 94.82
[2] => 100
[3] => 102.28
)
[4] => Array
(
[0] => U.A.E.
[1] => 101.22
[2] => 100
[3] => 99.94
)
[5] => Array
(
[0] => OMAN
[1] => 101.73
[2] => 100
[3] => 100.42
)
)
Please tell me whats going wrong from my side, if nothing then y graph not appearing.
I have two model name image and comment. here the relation is like image has many comments . Now in my listing page I want to display all imae detail and only the no of comment on that image . can you tell me how should I get that ?
after I write the query my return data is
Array
(
[0] => Array
(
[Image] => Array
(
[image_id] => 57
[user_id] => 1
[category_id] => 22
[image_title] => scroul
[description] => beutifull natural image for the animal
[keyword] => scrual
[image_price] =>
[image_name] => 7bf4a72509da5906903c84e88228b9dd.jpg
[image_path] => img/uploads/images/original/
[image_available_size] =>
[like] => 12
[size] => 3244
[resolution] => 2162 x 1644
[i_date] => 1348573022
[i_by] => 1
[u_date] => 1348573022
[u_by] => 1
[is_active] => Y
[is_deleted] => N
)
[Comment] => Array
(
[0] => Array
(
[comment_id] => 5
[image_id] => 57
[user_id] => 2
[comment] => socute
[comment_date] => 1348739230
[is_active] => N
[is_deleted] => N
)
)
)
[1] => Array
(
[Image] => Array
(
[image_id] => 56
[user_id] => 1
[category_id] => 22
[image_title] => cute dog
[description] => cute dog looking
[keyword] =>
[image_price] =>
[image_name] => d4af899b0d52cccbec94952a3abd0077.jpg
[image_path] => img/uploads/images/original/
[image_available_size] =>
[like] => 8
[size] => 620
[resolution] => 2592 x 1944
[i_date] => 1348572897
[i_by] => 1
[u_date] => 1348572897
[u_by] => 1
[is_active] => Y
[is_deleted] => N
)
[Comment] => Array
(
[0] => Array
(
[comment_id] => 3
[image_id] => 56
[user_id] => 2
[comment] => ohhhhhhh
[comment_date] => 1348737968
[is_active] => N
[is_deleted] => N
)
)
)
[3] => Array
(
[Image] => Array
(
[image_id] => 55
[user_id] => 1
[category_id] => 22
[image_title] => ships
[description] => ships with beutiful green background
[keyword] => ship,green,animal,nature,background,eating,white ship
[image_price] =>
[image_name] => c0dfc2432ae047e9160f3ef99880fe87.jpg
[image_path] => img/uploads/images/original/
[image_available_size] =>
[like] => 1
[size] => 1831
[resolution] => 2520 x 1944
[i_date] => 1348572846
[i_by] => 1
[u_date] => 1348661976
[u_by] => 1
[is_active] => Y
[is_deleted] => N
)
[Comment] => Array
(
[0] => Array
(
[comment_id] => 2
[image_id] => 55
[user_id] => 2
[comment] => i like it
[comment_date] => 1348737942
[is_active] => Y
[is_deleted] => N
)
[1] => Array
(
[comment_id] => 4
[image_id] => 55
[user_id] => 2
[comment] => good scene
[comment_date] => 1348738004
[is_active] => N
[is_deleted] => N
)
)
)
)
in the above array there is a all comment of that image. I don't want here comment list I just want no of comments .
Could you post the find statement you're using. You can set recursive to a certain level, from the documentation:
-1 Cake fetches Group data only, no joins.
0 Cake fetches Group data and its domain
1 Cake fetches a Group, its domain and its associated Users
2 Cake fetches a Group, its domain, its associated Users, and the Users’ associated Articles
So you can call the following if you only want the data from the current model only:
$this->Model->find('all', array('recursive' => -1));
There is also the Containable behavior, which allows you to specify which Model data you want to retrieve when calling find.
Say you have a Post model which hasMany Image. The call, with the Containable behaviour in the Post Model properly included, would be:
$this->Post->find('all', array(
'conditions' => array('Post.id' => 1),
'contain' => array('Image')
));
EDIT:
Because of the spelling and formatting I misread your initial question. I thought you wanted "no comments" to appear in the data array, instead you want only the "number of comments" to appear.
If you want the comment count, use counterCache as Kishor Kundan proposes.
Cake offers another amazing magic, "counterCache".
You can define the counterCache in your Comments model
public $belongsTo = array(
'className' => 'Image',
'foreignKey' => <your_foreign_key>,
...
...
'counterCache' => true
);
Then you add a field, 'comment_count' in your images table (or the table which is being used by the model Image) and the cake will do the rest for you.
This does add an overhead every time a comment is added/deleted but it is far better alternative than to issue an 'count' every time you fetch image data.
For more info you can check the cookbook. Look out for "counterCache" there.
UPDATE:
To limit the scope for counter cache, use additional attribute 'counterScope' as
public $belongsTo = array(
'className' => 'Image',
'foreignKey' => <your_foreign_key>,
...
...
'counterCache' => true,
'counterScope' => array('Image.active' => 1)
);
I have a taxonomy parent tid '8'
I need to get all child tid for this parent id
$tid = 8;
$children = taxonomy_get_children($tid);
print_r($children);
am getting this result
8
Array
(
[9] => stdClass Object
(
[tid] => 9
[vid] => 3
[name] => Domestic
[description] => Domestic
[weight] => 0
)
[12] => stdClass Object
(
[tid] => 12
[vid] => 3
[name] => Economic
[description] => Economic
[weight] => 1
)
[11] => stdClass Object
(
[tid] => 11
[vid] => 3
[name] => International
[description] =>
[weight] => 2
)
[10] => stdClass Object
(
[tid] => 10
[vid] => 3
[name] => Social
[description] =>
[weight] => 3
)
)
how can I display only tid from this array.
$children = array_keys(taxonomy_get_children($tid));
You will notice it's an associative array where the tid in the object is the same as the array key - just grab the keys, it's equivalent to grabbing the tids from the objects themselves.